<!DOCTYPE html>
<html lang="en-US" dir="ltr">
  <head>
    <meta charset="utf-8">
    <meta name="viewport" content="width=device-width,initial-scale=1">
    <title>git | Wing's Note</title>
    <meta name="description" content="前端">
    <meta name="generator" content="VitePress v1.6.1">
    <link rel="preload stylesheet" href="/assets/style.CZ3yOroj.css" as="style">
    <link rel="preload stylesheet" href="/vp-icons.css" as="style">
    
    <script type="module" src="/assets/app.QwkrRvid.js"></script>
    <link rel="preload" href="/assets/inter-roman-latin.Di8DUHzh.woff2" as="font" type="font/woff2" crossorigin="">
    <link rel="modulepreload" href="/assets/chunks/theme.CiJOnvYt.js">
    <link rel="modulepreload" href="/assets/chunks/framework.CAfG9jOB.js">
    <link rel="modulepreload" href="/assets/src_前端_other-note_git.md.BzGlgr8Z.lean.js">
    <link rel="icon" href="/favicon.ico">
    <script id="check-dark-mode">(()=>{const e=localStorage.getItem("vitepress-theme-appearance")||"auto",a=window.matchMedia("(prefers-color-scheme: dark)").matches;(!e||e==="auto"?a:e==="dark")&&document.documentElement.classList.add("dark")})();</script>
    <script id="check-mac-os">document.documentElement.classList.toggle("mac",/Mac|iPhone|iPod|iPad/i.test(navigator.platform));</script>
  </head>
  <body>
    <div id="app"><div class="Layout" data-v-59b6aa09><!--[--><!--]--><!--[--><span tabindex="-1" data-v-e822a5b1></span><a href="#VPContent" class="VPSkipLink visually-hidden" data-v-e822a5b1>Skip to content</a><!--]--><!----><header class="VPNav" data-v-59b6aa09 data-v-e1424a3f><div class="VPNavBar" data-v-e1424a3f data-v-1a90bd4c><div class="wrapper" data-v-1a90bd4c><div class="container" data-v-1a90bd4c><div class="title" data-v-1a90bd4c><div class="VPNavBarTitle has-sidebar" data-v-1a90bd4c data-v-8fc6d704><a class="title" href="/" data-v-8fc6d704><!--[--><!--]--><!--[--><img class="VPImage logo" src="/logo.png" alt data-v-40f4ff36><!--]--><span data-v-8fc6d704>Wing&#39;s Note</span><!--[--><!--]--></a></div></div><div class="content" data-v-1a90bd4c><div class="content-body" data-v-1a90bd4c><!--[--><!--]--><div class="VPNavBarSearch search" data-v-1a90bd4c><!--[--><!----><div id="docsearch"><button type="button" class="DocSearch DocSearch-Button" aria-label="Search"><span class="DocSearch-Button-Container"><span class="vp-icon DocSearch-Search-Icon"></span><span class="DocSearch-Button-Placeholder">Search</span></span><span class="DocSearch-Button-Keys"><kbd class="DocSearch-Button-Key"></kbd><kbd class="DocSearch-Button-Key">K</kbd></span></button></div><!--]--></div><nav aria-labelledby="main-nav-aria-label" class="VPNavBarMenu menu" data-v-1a90bd4c data-v-07b13de5><span id="main-nav-aria-label" class="visually-hidden" data-v-07b13de5> Main Navigation </span><!--[--><!--[--><a class="VPLink link VPNavBarMenuLink" href="/src/前端/Vue/" tabindex="0" data-v-07b13de5 data-v-9b82e68b><!--[--><span data-v-9b82e68b>Vue</span><!--]--></a><!--]--><!--[--><a class="VPLink link VPNavBarMenuLink" href="/src/前端/Typescript/" tabindex="0" data-v-07b13de5 data-v-9b82e68b><!--[--><span data-v-9b82e68b>Typescript</span><!--]--></a><!--]--><!--[--><a class="VPLink link VPNavBarMenuLink" href="/src/前端/Javascript/" tabindex="0" data-v-07b13de5 data-v-9b82e68b><!--[--><span data-v-9b82e68b>Javascript</span><!--]--></a><!--]--><!--[--><a class="VPLink link VPNavBarMenuLink" href="/src/前端/html5/" tabindex="0" data-v-07b13de5 data-v-9b82e68b><!--[--><span data-v-9b82e68b>html5</span><!--]--></a><!--]--><!--[--><div class="VPFlyout VPNavBarMenuGroup active" data-v-07b13de5 data-v-7470aee4><button type="button" class="button" aria-haspopup="true" aria-expanded="false" data-v-7470aee4><span class="text" data-v-7470aee4><!----><span data-v-7470aee4>前端</span><span class="vpi-chevron-down text-icon" data-v-7470aee4></span></span></button><div class="menu" data-v-7470aee4><div class="VPMenu" data-v-7470aee4 data-v-54402249><div class="items" data-v-54402249><!--[--><!--[--><div class="VPMenuLink" data-v-54402249 data-v-a5b6c2ee><a class="VPLink link" href="/src/前端/Electron/" data-v-a5b6c2ee><!--[--><span data-v-a5b6c2ee>Electron</span><!--]--></a></div><!--]--><!--[--><div class="VPMenuLink" data-v-54402249 data-v-a5b6c2ee><a class="VPLink link" href="/src/前端/Javascript/" data-v-a5b6c2ee><!--[--><span data-v-a5b6c2ee>Javascript</span><!--]--></a></div><!--]--><!--[--><div class="VPMenuLink" data-v-54402249 data-v-a5b6c2ee><a class="VPLink link" href="/src/前端/Nextjs/" data-v-a5b6c2ee><!--[--><span data-v-a5b6c2ee>Nextjs</span><!--]--></a></div><!--]--><!--[--><div class="VPMenuLink" data-v-54402249 data-v-a5b6c2ee><a class="VPLink link" href="/src/前端/React/" data-v-a5b6c2ee><!--[--><span data-v-a5b6c2ee>React</span><!--]--></a></div><!--]--><!--[--><div class="VPMenuLink" data-v-54402249 data-v-a5b6c2ee><a class="VPLink link" href="/src/前端/Server/" data-v-a5b6c2ee><!--[--><span data-v-a5b6c2ee>Server</span><!--]--></a></div><!--]--><!--[--><div class="VPMenuLink" data-v-54402249 data-v-a5b6c2ee><a class="VPLink link" href="/src/前端/Typescript/" data-v-a5b6c2ee><!--[--><span data-v-a5b6c2ee>Typescript</span><!--]--></a></div><!--]--><!--[--><div class="VPMenuLink" data-v-54402249 data-v-a5b6c2ee><a class="VPLink link" href="/src/前端/Vue/" data-v-a5b6c2ee><!--[--><span data-v-a5b6c2ee>Vue</span><!--]--></a></div><!--]--><!--[--><div class="VPMenuLink" data-v-54402249 data-v-a5b6c2ee><a class="VPLink link" href="/src/前端/Webpack/" data-v-a5b6c2ee><!--[--><span data-v-a5b6c2ee>Webpack</span><!--]--></a></div><!--]--><!--[--><div class="VPMenuLink" data-v-54402249 data-v-a5b6c2ee><a class="VPLink link" href="/src/前端/es6/" data-v-a5b6c2ee><!--[--><span data-v-a5b6c2ee>es6</span><!--]--></a></div><!--]--><!--[--><div class="VPMenuLink" data-v-54402249 data-v-a5b6c2ee><a class="VPLink link" href="/src/前端/html5/" data-v-a5b6c2ee><!--[--><span data-v-a5b6c2ee>html5</span><!--]--></a></div><!--]--><!--[--><div class="VPMenuLink" data-v-54402249 data-v-a5b6c2ee><a class="VPLink link" href="/src/%E5%89%8D%E7%AB%AF/index.html" data-v-a5b6c2ee><!--[--><span data-v-a5b6c2ee>index</span><!--]--></a></div><!--]--><!--[--><div class="VPMenuLink" data-v-54402249 data-v-a5b6c2ee><a class="VPLink link" href="/src/前端/jQuery/" data-v-a5b6c2ee><!--[--><span data-v-a5b6c2ee>jQuery</span><!--]--></a></div><!--]--><!--[--><div class="VPMenuLink" data-v-54402249 data-v-a5b6c2ee><a class="VPLink link" href="/src/前端/mini-programe/" data-v-a5b6c2ee><!--[--><span data-v-a5b6c2ee>mini-programe</span><!--]--></a></div><!--]--><!--[--><div class="VPMenuLink" data-v-54402249 data-v-a5b6c2ee><a class="VPLink link" href="/src/前端/node/" data-v-a5b6c2ee><!--[--><span data-v-a5b6c2ee>node</span><!--]--></a></div><!--]--><!--[--><div class="VPMenuLink" data-v-54402249 data-v-a5b6c2ee><a class="VPLink link active" href="/src/前端/other-note/" data-v-a5b6c2ee><!--[--><span data-v-a5b6c2ee>other-note</span><!--]--></a></div><!--]--><!--[--><div class="VPMenuLink" data-v-54402249 data-v-a5b6c2ee><a class="VPLink link" href="/src/前端/react-native/" data-v-a5b6c2ee><!--[--><span data-v-a5b6c2ee>react-native</span><!--]--></a></div><!--]--><!--]--></div><!--[--><!--]--></div></div></div><!--]--><!--]--></nav><!----><div class="VPNavBarAppearance appearance" data-v-1a90bd4c data-v-f0ccd3bb><button class="VPSwitch VPSwitchAppearance" type="button" role="switch" title aria-checked="false" data-v-f0ccd3bb data-v-6485e66b data-v-5742d831><span class="check" data-v-5742d831><span class="icon" data-v-5742d831><!--[--><span class="vpi-sun sun" data-v-6485e66b></span><span class="vpi-moon moon" data-v-6485e66b></span><!--]--></span></span></button></div><div class="VPSocialLinks VPNavBarSocialLinks social-links" data-v-1a90bd4c data-v-3b261a8f data-v-fe1cd911><!--[--><a class="VPSocialLink no-icon" href="https://gitee.com/lwj-wing" aria-label="github" target="_blank" rel="noopener" data-v-fe1cd911 data-v-cf86f55c><span class="vpi-social-github"></span></a><!--]--></div><div class="VPFlyout VPNavBarExtra extra" data-v-1a90bd4c data-v-9782c2c2 data-v-7470aee4><button type="button" class="button" aria-haspopup="true" aria-expanded="false" aria-label="extra navigation" data-v-7470aee4><span class="vpi-more-horizontal icon" data-v-7470aee4></span></button><div class="menu" data-v-7470aee4><div class="VPMenu" data-v-7470aee4 data-v-54402249><!----><!--[--><!--[--><!----><div class="group" data-v-9782c2c2><div class="item appearance" data-v-9782c2c2><p class="label" data-v-9782c2c2>Appearance</p><div class="appearance-action" data-v-9782c2c2><button class="VPSwitch VPSwitchAppearance" type="button" role="switch" title aria-checked="false" data-v-9782c2c2 data-v-6485e66b data-v-5742d831><span class="check" data-v-5742d831><span class="icon" data-v-5742d831><!--[--><span class="vpi-sun sun" data-v-6485e66b></span><span class="vpi-moon moon" data-v-6485e66b></span><!--]--></span></span></button></div></div></div><div class="group" data-v-9782c2c2><div class="item social-links" data-v-9782c2c2><div class="VPSocialLinks social-links-list" data-v-9782c2c2 data-v-fe1cd911><!--[--><a class="VPSocialLink no-icon" href="https://gitee.com/lwj-wing" aria-label="github" target="_blank" rel="noopener" data-v-fe1cd911 data-v-cf86f55c><span class="vpi-social-github"></span></a><!--]--></div></div></div><!--]--><!--]--></div></div></div><!--[--><!--]--><button type="button" class="VPNavBarHamburger hamburger" aria-label="mobile navigation" aria-expanded="false" aria-controls="VPNavScreen" data-v-1a90bd4c data-v-6b7178ab><span class="container" data-v-6b7178ab><span class="top" data-v-6b7178ab></span><span class="middle" data-v-6b7178ab></span><span class="bottom" data-v-6b7178ab></span></span></button></div></div></div></div><div class="divider" data-v-1a90bd4c><div class="divider-line" data-v-1a90bd4c></div></div></div><!----></header><div class="VPLocalNav has-sidebar empty" data-v-59b6aa09 data-v-0f0712aa><div class="container" data-v-0f0712aa><button class="menu" aria-expanded="false" aria-controls="VPSidebarNav" data-v-0f0712aa><span class="vpi-align-left menu-icon" data-v-0f0712aa></span><span class="menu-text" data-v-0f0712aa>Menu</span></button><div class="VPLocalNavOutlineDropdown" style="--vp-vh:0px;" data-v-0f0712aa data-v-efa4bc9c><button data-v-efa4bc9c>回到顶部</button><!----></div></div></div><aside class="VPSidebar" data-v-59b6aa09 data-v-49277fb6><div class="curtain" data-v-49277fb6></div><nav class="nav" id="VPSidebarNav" aria-labelledby="sidebar-aria-label" tabindex="-1" data-v-49277fb6><span class="visually-hidden" id="sidebar-aria-label" data-v-49277fb6> Sidebar Navigation </span><!--[--><!--]--><!--[--><div class="no-transition group" data-v-401c7c95><section class="VPSidebarItem level-0 has-active" data-v-401c7c95 data-v-a16ab31a><!----><div class="items" data-v-a16ab31a><!--[--><div class="VPSidebarItem level-1 is-link" data-v-a16ab31a data-v-a16ab31a><div class="item" data-v-a16ab31a><div class="indicator" data-v-a16ab31a></div><a class="VPLink link link" href="/src/%E5%89%8D%E7%AB%AF/other-note/AST%E6%8A%BD%E8%B1%A1%E8%AF%AD%E6%B3%95%E6%A0%91.html" data-v-a16ab31a><!--[--><p class="text" data-v-a16ab31a>AST抽象语法树</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-a16ab31a data-v-a16ab31a><div class="item" data-v-a16ab31a><div class="indicator" data-v-a16ab31a></div><a class="VPLink link link" href="/src/%E5%89%8D%E7%AB%AF/other-note/Immutable.html" data-v-a16ab31a><!--[--><p class="text" data-v-a16ab31a>Immutable</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-a16ab31a data-v-a16ab31a><div class="item" data-v-a16ab31a><div class="indicator" data-v-a16ab31a></div><a class="VPLink link link" href="/src/%E5%89%8D%E7%AB%AF/other-note/Mac%E4%BD%BF%E7%94%A8%E6%8A%80%E5%B7%A7.html" data-v-a16ab31a><!--[--><p class="text" data-v-a16ab31a>Mac使用技巧</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-a16ab31a data-v-a16ab31a><div class="item" data-v-a16ab31a><div class="indicator" data-v-a16ab31a></div><a class="VPLink link link" href="/src/%E5%89%8D%E7%AB%AF/other-note/Markdown%E8%AF%AD%E6%B3%95.html" data-v-a16ab31a><!--[--><p class="text" data-v-a16ab31a>Markdown语法</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-a16ab31a data-v-a16ab31a><div class="item" data-v-a16ab31a><div class="indicator" data-v-a16ab31a></div><a class="VPLink link link" href="/src/%E5%89%8D%E7%AB%AF/other-note/Typora%E8%AE%BE%E7%BD%AE.html" data-v-a16ab31a><!--[--><p class="text" data-v-a16ab31a>Typora设置</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-a16ab31a data-v-a16ab31a><div class="item" data-v-a16ab31a><div class="indicator" data-v-a16ab31a></div><a class="VPLink link link" href="/src/%E5%89%8D%E7%AB%AF/other-note/VS%20code%20%E4%BD%BF%E7%94%A8%E6%8A%80%E5%B7%A7.html" data-v-a16ab31a><!--[--><p class="text" data-v-a16ab31a>VS code 使用技巧</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-a16ab31a data-v-a16ab31a><div class="item" data-v-a16ab31a><div class="indicator" data-v-a16ab31a></div><a class="VPLink link link" href="/src/%E5%89%8D%E7%AB%AF/other-note/VuePress%E6%90%AD%E5%BB%BA%E4%B8%AA%E4%BA%BA%E5%8D%9A%E5%AE%A2.html" data-v-a16ab31a><!--[--><p class="text" data-v-a16ab31a>VuePress搭建个人博客</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-a16ab31a data-v-a16ab31a><div class="item" data-v-a16ab31a><div class="indicator" data-v-a16ab31a></div><a class="VPLink link link" href="/src/%E5%89%8D%E7%AB%AF/other-note/animate.css%E4%BD%BF%E7%94%A8%E6%96%B9%E6%B3%95.html" data-v-a16ab31a><!--[--><p class="text" data-v-a16ab31a>animate.css使用方法</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-a16ab31a data-v-a16ab31a><div class="item" data-v-a16ab31a><div class="indicator" data-v-a16ab31a></div><a class="VPLink link link" href="/src/%E5%89%8D%E7%AB%AF/other-note/bootstrap%20%E5%85%A8%E5%B1%80css%E6%A0%B7%E5%BC%8F.html" data-v-a16ab31a><!--[--><p class="text" data-v-a16ab31a>bootstrap 全局css样式</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-a16ab31a data-v-a16ab31a><div class="item" data-v-a16ab31a><div class="indicator" data-v-a16ab31a></div><a class="VPLink link link" href="/src/%E5%89%8D%E7%AB%AF/other-note/canvas.html" data-v-a16ab31a><!--[--><p class="text" data-v-a16ab31a>canvas</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-a16ab31a data-v-a16ab31a><div class="item" data-v-a16ab31a><div class="indicator" data-v-a16ab31a></div><a class="VPLink link link" href="/src/%E5%89%8D%E7%AB%AF/other-note/git.html" data-v-a16ab31a><!--[--><p class="text" data-v-a16ab31a>git</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-a16ab31a data-v-a16ab31a><div class="item" data-v-a16ab31a><div class="indicator" data-v-a16ab31a></div><a class="VPLink link link" href="/src/%E5%89%8D%E7%AB%AF/other-note/hexo%E6%90%AD%E5%BB%BA%E4%B8%AA%E4%BA%BA%E5%8D%9A%E5%AE%A2.html" data-v-a16ab31a><!--[--><p class="text" data-v-a16ab31a>hexo搭建个人博客</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-a16ab31a data-v-a16ab31a><div class="item" data-v-a16ab31a><div class="indicator" data-v-a16ab31a></div><a class="VPLink link link" href="/src/%E5%89%8D%E7%AB%AF/other-note/mobx.html" data-v-a16ab31a><!--[--><p class="text" data-v-a16ab31a>mobx</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-a16ab31a data-v-a16ab31a><div class="item" data-v-a16ab31a><div class="indicator" data-v-a16ab31a></div><a class="VPLink link link" href="/src/%E5%89%8D%E7%AB%AF/other-note/%E4%B8%83%E7%89%9B%E4%BA%91cdn%E5%8A%A0%E9%80%9F%E5%9B%BE%E7%89%87.html" data-v-a16ab31a><!--[--><p class="text" data-v-a16ab31a>七牛云cdn加速图片</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-a16ab31a data-v-a16ab31a><div class="item" data-v-a16ab31a><div class="indicator" data-v-a16ab31a></div><a class="VPLink link link" href="/src/%E5%89%8D%E7%AB%AF/other-note/%E5%8C%85%E7%AE%A1%E7%90%86%E5%B7%A5%E5%85%B7.html" data-v-a16ab31a><!--[--><p class="text" data-v-a16ab31a>包管理工具</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-a16ab31a data-v-a16ab31a><div class="item" data-v-a16ab31a><div class="indicator" data-v-a16ab31a></div><a class="VPLink link link" href="/src/%E5%89%8D%E7%AB%AF/other-note/%E5%9B%A2%E9%98%9F%E5%8D%8F%E4%BD%9C%E5%B7%A5%E5%85%B7.html" data-v-a16ab31a><!--[--><p class="text" data-v-a16ab31a>团队协作工具</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-a16ab31a data-v-a16ab31a><div class="item" data-v-a16ab31a><div class="indicator" data-v-a16ab31a></div><a class="VPLink link link" href="/src/%E5%89%8D%E7%AB%AF/other-note/%E5%BE%AE%E4%BF%A1%E5%88%86%E4%BA%AB.html" data-v-a16ab31a><!--[--><p class="text" data-v-a16ab31a>微信分享</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-a16ab31a data-v-a16ab31a><div class="item" data-v-a16ab31a><div class="indicator" data-v-a16ab31a></div><a class="VPLink link link" href="/src/%E5%89%8D%E7%AB%AF/other-note/%E6%9C%AA%E5%AD%A6%E7%9F%A5%E8%AF%86.html" data-v-a16ab31a><!--[--><p class="text" data-v-a16ab31a>未学知识</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-a16ab31a data-v-a16ab31a><div class="item" data-v-a16ab31a><div class="indicator" data-v-a16ab31a></div><a class="VPLink link link" href="/src/%E5%89%8D%E7%AB%AF/other-note/%E6%B5%8F%E8%A7%88%E5%99%A8%E6%8A%80%E5%B7%A7.html" data-v-a16ab31a><!--[--><p class="text" data-v-a16ab31a>浏览器技巧</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-a16ab31a data-v-a16ab31a><div class="item" data-v-a16ab31a><div class="indicator" data-v-a16ab31a></div><a class="VPLink link link" href="/src/%E5%89%8D%E7%AB%AF/other-note/%E7%99%BE%E5%BA%A6%E5%9C%B0%E5%9B%BEAPI.html" data-v-a16ab31a><!--[--><p class="text" data-v-a16ab31a>百度地图API</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-a16ab31a data-v-a16ab31a><div class="item" data-v-a16ab31a><div class="indicator" data-v-a16ab31a></div><a class="VPLink link link" href="/src/%E5%89%8D%E7%AB%AF/other-note/%E9%85%8D%E7%BD%AE%E6%94%AF%E4%BB%98%E5%AE%9D%E6%8E%A5%E5%8F%A3.html" data-v-a16ab31a><!--[--><p class="text" data-v-a16ab31a>配置支付宝接口</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-a16ab31a data-v-a16ab31a><div class="item" data-v-a16ab31a><div class="indicator" data-v-a16ab31a></div><a class="VPLink link link" href="/src/%E5%89%8D%E7%AB%AF/other-note/%E9%9D%A2%E8%AF%95%E5%A4%8D%E4%B9%A0.html" data-v-a16ab31a><!--[--><p class="text" data-v-a16ab31a>面试复习</p><!--]--></a><!----></div><!----></div><!--]--></div></section></div><!--]--><!--[--><!--]--></nav></aside><div class="VPContent has-sidebar" id="VPContent" data-v-59b6aa09 data-v-8e5081de><div class="VPDoc has-sidebar has-aside" data-v-8e5081de data-v-508e019d><!--[--><!--]--><div class="container" data-v-508e019d><div class="aside" data-v-508e019d><div class="aside-curtain" data-v-508e019d></div><div class="aside-container" data-v-508e019d><div class="aside-content" data-v-508e019d><div class="VPDocAside" data-v-508e019d data-v-00484315><!--[--><!--]--><!--[--><!--]--><nav aria-labelledby="doc-outline-aria-label" class="VPDocAsideOutline" data-v-00484315 data-v-aa4fe961><div class="content" data-v-aa4fe961><div class="outline-marker" data-v-aa4fe961></div><div aria-level="2" class="outline-title" id="doc-outline-aria-label" role="heading" data-v-aa4fe961>页面导航</div><ul class="VPDocOutlineItem root" data-v-aa4fe961 data-v-1333dcf2><!--[--><!--]--></ul></div></nav><!--[--><!--]--><div class="spacer" data-v-00484315></div><!--[--><!--]--><!----><!--[--><!--]--><!--[--><!--]--></div></div></div></div><div class="content" data-v-508e019d><div class="content-container" data-v-508e019d><!--[--><!--]--><main class="main" data-v-508e019d><div style="position:relative;" class="vp-doc _src_%E5%89%8D%E7%AB%AF_other-note_git" data-v-508e019d><div><h1 id="git" tabindex="-1">git <a class="header-anchor" href="#git" aria-label="Permalink to &quot;git&quot;">​</a></h1><h2 id="一、配置ssh" tabindex="-1">一、配置ssh <a class="header-anchor" href="#一、配置ssh" aria-label="Permalink to &quot;一、配置ssh&quot;">​</a></h2><ol><li>设置user name和email</li></ol><div class="language-bash vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">bash</span><pre class="shiki shiki-themes github-light github-dark vp-code" tabindex="0"><code><span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;"># 如果需要配置当前项目，则不用加--global</span></span>
<span class="line"><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">git</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> config</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> --global</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> user.name</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> &#39;wing&#39;</span></span>
<span class="line"><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">git</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> config</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> --global</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> user.email</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> &#39;wing@qq.com&#39;</span></span></code></pre></div><ol start="2"><li>生成SSH密钥过程</li></ol><p>（1）查看是否已经有了ssh密钥：cd ~/.ssh</p><p>路径：c:/用户/Administrator/.ssh 删除.ssh下面的所有文件</p><p>（2）生成密钥</p><div class="language-bash vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">bash</span><pre class="shiki shiki-themes github-light github-dark vp-code" tabindex="0"><code><span class="line"><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">ssh-keygen</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> -t</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> rsa</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> -C</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> &#39;wing@qq.com&#39;</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">   //</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> 回车之后记得根据提示按下yes</span></span></code></pre></div><p>注意：如果提示ssh-keygen不是内部命令或者其他的报错，则需要以下配置</p><p>找到git/usr/bin目录下的ssh-keygen.exe，之后配置到Path环境变量;</p><p><img src="https://notecdn.hrhe.cn/images/git-01.png" alt="image-20200412204637296"></p><ol start="3"><li>生成密钥之后就可以去官网绑定了</li></ol><h3 id="配置多个ssh" tabindex="-1">配置多个ssh <a class="header-anchor" href="#配置多个ssh" aria-label="Permalink to &quot;配置多个ssh&quot;">​</a></h3><ol><li><p>创建ssh key，名字随便写，后面地址记得修改为自己的.ssh地址，mac为~/.ssh，window为c盘下面的用户下面的.ssh</p><div class="language-bash vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">bash</span><pre class="shiki shiki-themes github-light github-dark vp-code" tabindex="0"><code><span class="line"><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">ssh-keygen</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> -t</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> rsa</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> -C</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> &quot;hny@q.com&quot;</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> -f</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> ~/.ssh/id_rsa_gitlab</span></span></code></pre></div></li><li><p>创建一个config文件，没有后缀，编辑以下内容：</p><div class="language-bash vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">bash</span><pre class="shiki shiki-themes github-light github-dark vp-code" tabindex="0"><code><span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;"># gitee</span></span>
<span class="line"><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">Host</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> gitee.com</span></span>
<span class="line"><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">HostName</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> gitee.com</span></span>
<span class="line"><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">PreferredAuthentications</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> publickey</span></span>
<span class="line"><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">IdentityFile</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> ~/.ssh/id_rsa.gitee</span></span>
<span class="line"></span>
<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;"># github</span></span>
<span class="line"><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">Host</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> github.com</span></span>
<span class="line"><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">HostName</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> github.com</span></span>
<span class="line"><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">PreferredAuthentications</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> publickey</span></span>
<span class="line"><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">IdentityFile</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> ~/.ssh/id_rsa.github</span></span>
<span class="line"></span>
<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;"># gitlab</span></span>
<span class="line"><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">Host</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> gitlab.com</span></span>
<span class="line"><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">HostName</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> gitlab.com</span></span>
<span class="line"><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">PreferredAuthentications</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> publickey</span></span>
<span class="line"><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">IdentityFile</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> ~/.ssh/id_rsa.gitlab</span></span></code></pre></div></li><li><p>最后进行测试连通性</p><div class="language-bash vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">bash</span><pre class="shiki shiki-themes github-light github-dark vp-code" tabindex="0"><code><span class="line"><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">ssh</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> -T</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> git@gitlab.com</span></span></code></pre></div></li></ol><p><strong>注意</strong></p><ol><li><p>配置ssh后，拉项目仍然提示无权限，查看是否有<code>known_hosts</code>文件存在<code>.ssh</code>里面，如果没有的话在拉项目会提示生成，输入yes即可生成，如果回车则不会生成</p></li><li><p>仍无权限，尝试在.ssh文件夹下新增config文件，并加入如下</p><div class="language-bash vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">bash</span><pre class="shiki shiki-themes github-light github-dark vp-code" tabindex="0"><code><span class="line"><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">PubkeyAcceptedKeyTypes</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> +ssh-rsa</span></span></code></pre></div></li><li><p>仍无权限，使用新的签名算法</p><div class="language-bash vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">bash</span><pre class="shiki shiki-themes github-light github-dark vp-code" tabindex="0"><code><span class="line"><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">ssh-keygen</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> -t</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> ed25519</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> -C</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> &quot;xxx@email.com&quot;</span></span></code></pre></div></li></ol><h2 id="二、项目初始化" tabindex="-1">二、项目初始化 <a class="header-anchor" href="#二、项目初始化" aria-label="Permalink to &quot;二、项目初始化&quot;">​</a></h2><ol><li>在git官网新建一个git仓库之后；</li></ol><p>如果没有使用readme初始化，执行以下四步</p><div class="language-bash vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">bash</span><pre class="shiki shiki-themes github-light github-dark vp-code" tabindex="0"><code><span class="line"><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">git</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> init</span><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;">  # 初始化</span></span>
<span class="line"><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">git</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> add</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> .</span><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;">   # 添加当前项目文件夹下的所有文件， 如果是./*则是当前文件夹下</span></span>
<span class="line"><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">git</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> commit</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> -m</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> &#39;描述&#39;</span><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;">   # 给文件添加备注</span></span>
<span class="line"><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">git</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> remote</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> add</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> origin</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> 地址</span><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;">    # 添加远程仓库地址</span></span>
<span class="line"><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">git</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> push</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> -u</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> origin</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> master</span><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;">   # 把本地添加的文件上传到git;</span></span></code></pre></div><ol start="2"><li>如果使用了readme初始化；</li></ol><div class="language-bash vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">bash</span><pre class="shiki shiki-themes github-light github-dark vp-code" tabindex="0"><code><span class="line"><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">git</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> clone</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> 地址</span><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;">  # 克隆只需要操作一次</span></span></code></pre></div><ol start="3"><li>当修改了文件之后想要上传代码</li></ol><div class="language-bash vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">bash</span><pre class="shiki shiki-themes github-light github-dark vp-code" tabindex="0"><code><span class="line"><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">git</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> add</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> .</span></span>
<span class="line"><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">git</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> commit</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> -m</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> &#39;添加描述&#39;</span></span>
<span class="line"><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">git</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> pull</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">   </span></span>
<span class="line"><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">git</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> push</span></span></code></pre></div><p>如果git pull拉下来的代码有冲突则需要先解决冲突问题，解决之后需要再次git add 重复第一二次，如果没有则直接git push</p><p>注意：push失败的情况</p><p>（1）文件为空</p><p>（2）创建文件之后没有commit</p><h2 id="三、分支操作" tabindex="-1">三、分支操作 <a class="header-anchor" href="#三、分支操作" aria-label="Permalink to &quot;三、分支操作&quot;">​</a></h2><h3 id="分支常用命令" tabindex="-1">分支常用命令 <a class="header-anchor" href="#分支常用命令" aria-label="Permalink to &quot;分支常用命令&quot;">​</a></h3><ul><li><code>git branch</code> 查看本地分支</li><li><code>git branch -a</code> 查看所有分支</li><li><code>git branch -vv</code> 查看本地分支写远程分支的对比</li><li><code>git branch -m master main</code> 重命名分支</li><li><code>git checkout &lt;branch&gt;</code> 切换到一个分支，本地没有的分支远程有的话也可以直接切换</li><li><code>git checkout -b dev</code> 创建一个新分支</li><li><code>git checkout -b dev origin/dev</code> 切换到一个新的分支，并追踪到远程分支上；</li><li><code>git push --set-upstream origin dev</code> 将本地新分支推到远程</li><li><code>git fetch</code> 拉取最新远程信息</li><li><code>git merge master</code> 合并master内容</li><li><code>git rebase dev2.0</code> 融合dev2.0分支最新的内容</li></ul><h3 id="分支命名规范" tabindex="-1">分支命名规范 <a class="header-anchor" href="#分支命名规范" aria-label="Permalink to &quot;分支命名规范&quot;">​</a></h3><ul><li><code>master</code>：master分支为主分支，也是用于部署生产环境的分支，master分支一般由其他分支进行合并，任何时间都不能直接修改master分支；</li><li><code>develop</code>：develop-4.0.0；分支为开发分支，一般开发新功能时，feature分支都是基于develop分支创建的；</li><li><code>feature</code>：feature-user；开发新功能时，以develop为基础创建feature分支</li><li><code>release</code>：release-4.0.0；release为预上线分支，发布提测</li><li><code>hotfix</code>：hotfix-***；线上出现紧急问题时，需要及时修复，以master分支为基线，创建hotfix分支，修复完成后，需要合并到master分支和develop分支</li></ul><p><img src="https://notecdn.hrhe.cn/images/3412338-53aedee7d8081020.png" alt="img"></p><p>主分支master建议每次上线打上tag</p><div class="language-bash vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">bash</span><pre class="shiki shiki-themes github-light github-dark vp-code" tabindex="0"><code><span class="line"><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">git</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> tag</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> -a</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> v0.1</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> -m</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> &#39;部署包版本名&#39;</span></span></code></pre></div><h3 id="清理本地分支" tabindex="-1">清理本地分支 <a class="header-anchor" href="#清理本地分支" aria-label="Permalink to &quot;清理本地分支&quot;">​</a></h3><div class="language-bash vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">bash</span><pre class="shiki shiki-themes github-light github-dark vp-code" tabindex="0"><code><span class="line"><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">git</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> remote</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> show</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> origin</span></span>
<span class="line"><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">git</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> remote</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> prune</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> origin</span></span></code></pre></div><h3 id="删除分支" tabindex="-1">删除分支 <a class="header-anchor" href="#删除分支" aria-label="Permalink to &quot;删除分支&quot;">​</a></h3><blockquote><p>删除不能删除远程的分支</p></blockquote><p>（1）删除单个分支</p><div class="language-bash vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">bash</span><pre class="shiki shiki-themes github-light github-dark vp-code" tabindex="0"><code><span class="line"><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">git</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> branch</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> -D</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> dev</span></span></code></pre></div><p>（2）批量删除：删除除去master分支：</p><div class="language-bash vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">bash</span><pre class="shiki shiki-themes github-light github-dark vp-code" tabindex="0"><code><span class="line"><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">git</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> checkout</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> master</span></span>
<span class="line"><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">git</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> branch</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> |</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;"> grep</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> -v</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> &#39;master&#39;</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> |</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;"> xargs</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> git</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> branch</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> -D</span></span></code></pre></div><h3 id="gitlab分支介绍" tabindex="-1">gitlab分支介绍 <a class="header-anchor" href="#gitlab分支介绍" aria-label="Permalink to &quot;gitlab分支介绍&quot;">​</a></h3><p>所有分支针对<code>master</code>做比较，下图中，左边为落后<code>master</code>分支数量，右边为超前<code>master</code>分支数量；</p><p><img src="https://notecdn.hrhe.cn/images/git-12.png" alt="image-20200426124513175"></p><h3 id="删除中间的版本" tabindex="-1">删除中间的版本 <a class="header-anchor" href="#删除中间的版本" aria-label="Permalink to &quot;删除中间的版本&quot;">​</a></h3><div class="language-bash vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">bash</span><pre class="shiki shiki-themes github-light github-dark vp-code" tabindex="0"><code><span class="line"><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">git</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> rebase</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> -i</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> commit-id</span></span></code></pre></div><p>执行命令之后会弹出来一个vim编辑器，将要删除的版本的<code>pick</code>改为<code>drop</code>，之后保存，之后执行<code>git push -f -u</code>强制推送远程</p><h3 id="常见分支问题" tabindex="-1">常见分支问题 <a class="header-anchor" href="#常见分支问题" aria-label="Permalink to &quot;常见分支问题&quot;">​</a></h3><ol><li><p>ignoring broken ref refs问题</p><ul><li>找到.git目录下refs/remotes/origin目录（子模块的这个目录是在主模块的.git目录下，因为子模块没有.git目录）</li><li>删除里面的HEAD文件或者所有文件</li><li>然后运行git fetch –all</li></ul></li></ol><h2 id="四、commit" tabindex="-1">四、commit <a class="header-anchor" href="#四、commit" aria-label="Permalink to &quot;四、commit&quot;">​</a></h2><h3 id="commit-提交消息类型" tabindex="-1">commit 提交消息类型 <a class="header-anchor" href="#commit-提交消息类型" aria-label="Permalink to &quot;commit 提交消息类型&quot;">​</a></h3><ul><li>build：主要目的是修改项目构建系统(例如 glup，webpack，rollup 的配置等)的提交</li><li>ci：主要目的是修改项目继续集成流程(例如 Travis，Jenkins，GitLab CI，Circle等)的提交</li><li>docs：文档更新</li><li>feat：新增功能</li><li>fix：bug 修复</li><li>perf：性能优化</li><li>refactor：重构代码(既没有新增功能，也没有修复 bug)</li><li>style：不影响程序逻辑的代码修改(修改空白字符，补全缺失的分号等)</li><li>test：新增测试用例或是更新现有测试</li><li>revert：回滚某个更早之前的提交</li><li>chore：不属于以上类型的其他类型</li></ul><h3 id="重复上次提交信息" tabindex="-1">重复上次提交信息 <a class="header-anchor" href="#重复上次提交信息" aria-label="Permalink to &quot;重复上次提交信息&quot;">​</a></h3><p><code>git commit --amend --no-edit</code>； 一般用于上次commit忘记修改的文件了；</p><h2 id="四、常用指令" tabindex="-1">四、常用指令 <a class="header-anchor" href="#四、常用指令" aria-label="Permalink to &quot;四、常用指令&quot;">​</a></h2><h3 id="git-rebase" tabindex="-1">git rebase <a class="header-anchor" href="#git-rebase" aria-label="Permalink to &quot;git rebase&quot;">​</a></h3><blockquote><p>git rebase会将当前分支的提交复制到指定的分支之上；</p></blockquote><p><code>git rebase master</code> 将master分支的commit合并到当前分支上</p><p>rebase可以保留一个漂亮的、线性的git历史记录；</p><p><strong>同一分支的合并</strong></p><p>当拉代码遇到冲突时，需要pull，这时，<code>git log --oneline --graph</code> 会发现多出了一个分叉，这时输入<code>git rebase</code>即可合并当前的分叉，之后执行push提交代码；</p><p>也可以直接：<code>git pull --rebase</code>；不需要pull之后再rebase；</p><p><strong>不同分支之间的合并</strong></p><div class="language-bash vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">bash</span><pre class="shiki shiki-themes github-light github-dark vp-code" tabindex="0"><code><span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;"># 当dev1分支修改后, 切换到dev2分支, 并rebase dev1分支</span></span>
<span class="line"><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">git</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> checkout</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> dev2</span></span>
<span class="line"><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">git</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> rebase</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> dev1</span></span>
<span class="line"><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">git</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> checkout</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> dev1</span></span></code></pre></div><p>如果在rebase时，出现冲突，比如：代码修改</p><p>rebase冲突之后：<code>git rebase --continue</code>；因为之前的rebase其实只完成了一半；</p><p>参考文献：<a href="https://www.jianshu.com/p/f7ed3dd0d2d8" target="_blank" rel="noreferrer">Git rebase使用</a></p><p><strong>不关心内容，自己合并冲突，递归解决</strong></p><div class="language-bash vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">bash</span><pre class="shiki shiki-themes github-light github-dark vp-code" tabindex="0"><code><span class="line"><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">git</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> rebase</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> -s</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> recursive</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> -X</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> theirs</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> &lt;</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">branc</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">h</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">&gt;</span></span></code></pre></div><p>之后rebase冲突，只需要执行以下命令继续解决：</p><div class="language-bash vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">bash</span><pre class="shiki shiki-themes github-light github-dark vp-code" tabindex="0"><code><span class="line"><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">git</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> add</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> .</span></span>
<span class="line"><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">git</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> rebase</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> --continue</span></span></code></pre></div><p><strong>产生分叉的条件</strong></p><ol><li>当push时，提示需要拉代码，这时pull之后再push，就会产生分叉，解决办法就是pull之后执行<code>git rebase</code>之后再提交即可</li><li>基于master拉的dev分支，master提交了新的代码之后再合并dev分支，这时master有个单独的commit，就会产生分叉了，解决办法就是当merge分支代码时，如果出现分叉，尽量使用rebase，而不是使用merge</li></ol><p><strong>分叉时rebase的使用</strong></p><p>当出现分叉时，哪个分支代码落后，就在哪个分支rebase最新的分支</p><p>如果代码发生冲突，则会在rebase时，让你解决，</p><ul><li>冲突解决没有更改：<code>git rebase --skip</code></li><li>冲突解决有更改：使用<code>git add .</code> and <code>git rebase --continue</code></li></ul><p>冲突解决完成之后，由于本地的分支与远程不一致，会让pull，这时使用 <code>git push -f</code>强制推送，强制推送之前尽量检查下之前的commit代码是否存在；</p><p>如果没有出现分叉，使用merge或者rebase都是一样的</p><p><strong>rebase时冲突过多</strong></p><p>检查是否有同一个message重复多次，将重复的message使用<code>git rebase -i</code>，之后drop掉重复message的commitId，这样就不会出现冲突了</p><h3 id="git-stash" tabindex="-1">git stash <a class="header-anchor" href="#git-stash" aria-label="Permalink to &quot;git stash&quot;">​</a></h3><ol><li><p>为什么需要暂时：</p><ul><li>（1）当我们写代码时，发现写错分支了，此时需要将代码保存到暂存区，切换到正确的分支再拉下来</li><li>（2）当我们修改了一些文件时，想查看修改的文件是否造成了其他问题，可以先保存在暂存区，测试完再拉下来</li></ul></li><li><p>基础使用</p></li></ol><div class="language-bash vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">bash</span><pre class="shiki shiki-themes github-light github-dark vp-code" tabindex="0"><code><span class="line"><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">git</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> stash</span><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;"> # 提交到暂存区</span></span>
<span class="line"><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">git</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> stash</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> pop</span><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;"> # 拉下来</span></span></code></pre></div><ol start="3"><li>常用的git stash命令</li></ol><ul><li><code>git stash save &#39;message&#39;</code>：执行存储时，添加备注，方便查找，git stash不方便查找</li><li><code>git stash list</code> ：查看stash了哪些存储</li><li><code>git stash show</code> ：显示做了哪些改动，默认show第一个存储，</li><li><code>git stash show stash@{1}</code> ： 显示第一个修改文件</li><li><code>git stash apply</code> ： 应用某个存储，但不会把存储从存储列表中删除，默认使用第一个</li><li><code>git stash apply stash@{1}</code> ：应用第一个</li><li><code>git stash pop</code> ： 命令恢复之前的缓存工作目录，将缓存堆栈中的对应stash删除</li><li><code>git stash pop stash@{1}</code> ：应用指定的stash</li><li><code>git stash drop stash@{1}</code> ：丢弃第几个存储，从列表中删除这个存储</li><li><code>git stash clear</code> ： 删除所有缓存的stash；</li></ul><p>注意：新增的文件，直接执行<code>stash</code>是不会被存储的，如果有新增文件的时候，需要首先执行git add添加新文件到git库中，不需要提交和<code>commit</code>，然后再执行<code>git stash</code>即可；</p><h3 id="git-cherry-pick" tabindex="-1">git cherry-pick <a class="header-anchor" href="#git-cherry-pick" aria-label="Permalink to &quot;git cherry-pick&quot;">​</a></h3><p>如果需要合并所有的内容，直接使用merge即可，如果只需要部分内容，则使用<code>git cherry-pick</code>，需要切换到想要cherry-pick的分支</p><ul><li>合并单个：<code>git cherry-pick commitId</code> 如果跟的是分支名，表示合并分支最新提交</li><li>合并多个：<code>git cherry-pick commitIdA commitIdB</code></li><li>合并连续不包含A：<code>git cherry-pick commitIdA..commitIdB</code></li><li>合并连续包含A：<code>git cherry-pick commitIdA^..commitIdB</code></li></ul><p><strong>其他操作</strong></p><ul><li>如果合并过程中发生冲突，待解决冲突之后，执行<code>git add .</code>，之后执行<code>git cherry-pick --continue</code></li><li>冲突之后放弃合并：<code>git cherry-pick --abort</code></li><li>冲突之后直接退出：<code>git cherry-pick --quit</code></li></ul><p>参考地址：<a href="http://www.ruanyifeng.com/blog/2020/04/git-cherry-pick.html" target="_blank" rel="noreferrer">阮一峰 git cherry-pick 教程</a></p><h2 id="五、用户管理" tabindex="-1">五、用户管理 <a class="header-anchor" href="#五、用户管理" aria-label="Permalink to &quot;五、用户管理&quot;">​</a></h2><p><code>git config --list</code> 查看git配置</p><h2 id="六、版本管理" tabindex="-1">六、版本管理 <a class="header-anchor" href="#六、版本管理" aria-label="Permalink to &quot;六、版本管理&quot;">​</a></h2><h3 id="状态查看" tabindex="-1">状态查看 <a class="header-anchor" href="#状态查看" aria-label="Permalink to &quot;状态查看&quot;">​</a></h3><p><code>git status</code> 查看文件add的状态，以及远程是否有更新</p><h3 id="日志查看" tabindex="-1">日志查看 <a class="header-anchor" href="#日志查看" aria-label="Permalink to &quot;日志查看&quot;">​</a></h3><ul><li><p><code>git log</code> # 获取版本id</p></li><li><p><code>git reflog</code> # 查看所有的版本id，可以查看到回退之后的之前的版本</p></li></ul><p>reflog可以查看到所有的操作信息，比如push、reset、commit等等；</p><p>比如：1-10的版本回退到1-8的版本，git log只能看到最新的8，reflog还可以看到10；</p><h3 id="回退版本" tabindex="-1">回退版本 <a class="header-anchor" href="#回退版本" aria-label="Permalink to &quot;回退版本&quot;">​</a></h3><ul><li>软重置：<code>git reset --soft HEAD~2</code> 或id；</li></ul><p>执行软重置不会移除提交之后加入的修改，但是会修改git的历史记录，当使用了reset可以使用status查看修改内容，意味着可以重新修改重新提交；</p><ul><li>硬重置：<code>git reset --hard id</code> 不保留提交引入的修改，看不到之前的修改内容；</li></ul><p>常用的回退版本命令：</p><div class="language-bash vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">bash</span><pre class="shiki shiki-themes github-light github-dark vp-code" tabindex="0"><code><span class="line"><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">git</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> reset</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> --hard</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> id</span><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;">   # 回退本地代码库</span></span>
<span class="line"><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">git</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> push</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> -f</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> -u</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> origin</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> master</span><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;">  # 推送到远程服务器</span></span>
<span class="line"><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">git</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> pull</span><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;">  # 重新拉取代码</span></span></code></pre></div><p>回退上一个版本：<code>git reset --hard head^</code></p><h3 id="添加多个仓库地址" tabindex="-1">添加多个仓库地址 <a class="header-anchor" href="#添加多个仓库地址" aria-label="Permalink to &quot;添加多个仓库地址&quot;">​</a></h3><p>配置远程仓库：<code>git remote add origin url</code></p><p>如果不行重命名也可以：<code>git remote add originOther url</code></p><p>一次推送到所有仓库：<code>git push --all</code></p><p>**set-url **</p><p>设置新的url地址：<code>git remote set-url origin url</code></p><p>添加一个新的url地址：<code>git remote set-url --add origin url</code></p><p>删除一个url地址：<code>git remote set-url --delete origin url</code></p><p>使用set-url添加的新的地址，在push时会同时push两个</p><h3 id="切换远程仓库地址" tabindex="-1">切换远程仓库地址 <a class="header-anchor" href="#切换远程仓库地址" aria-label="Permalink to &quot;切换远程仓库地址&quot;">​</a></h3><div class="language-bash vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">bash</span><pre class="shiki shiki-themes github-light github-dark vp-code" tabindex="0"><code><span class="line"><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">git</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> remote</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> -v</span><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;"> # 查看本地仓库远程地址</span></span>
<span class="line"><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">git</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> remote</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> rm</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> origin</span><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;"> # 删除本地远程地址</span></span>
<span class="line"><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">git</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> remote</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> add</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> origin</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> 地址</span><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;"> # 添加远程仓库地址</span></span>
<span class="line"><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">git</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> branch</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> --set-upstream-to=origin/master</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> master</span><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;"> # 将本地分支追踪到远程master</span></span></code></pre></div><h3 id="git项目迁移" tabindex="-1">git项目迁移 <a class="header-anchor" href="#git项目迁移" aria-label="Permalink to &quot;git项目迁移&quot;">​</a></h3><div class="language-bash vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">bash</span><pre class="shiki shiki-themes github-light github-dark vp-code" tabindex="0"><code><span class="line"><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">git</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> clone</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> --bare</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> git地址</span><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;"> # 拉下来之后是.git的文件夹</span></span>
<span class="line"><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">git</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> push</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> --mirror</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> git地址</span><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;">  # 直接push到新的项目仓库</span></span></code></pre></div><h2 id="七、git常见问题" tabindex="-1">七、git常见问题 <a class="header-anchor" href="#七、git常见问题" aria-label="Permalink to &quot;七、git常见问题&quot;">​</a></h2><h3 id="描述出错怎么修改描述" tabindex="-1">描述出错怎么修改描述 <a class="header-anchor" href="#描述出错怎么修改描述" aria-label="Permalink to &quot;描述出错怎么修改描述&quot;">​</a></h3><p><strong>第一种方法：</strong><code>git commit --amend</code>，之后直接修改描述保存即可</p><p><strong>第二种方法：</strong></p><ol start="2"><li>通过git log找到上一个提交的commit_id</li></ol><p><img src="https://notecdn.hrhe.cn/images/git-02.png" alt="image"></p><ol start="2"><li>通过：git reset --soft commit_id，执行一遍，之后就可以重新git commit了；</li></ol><h3 id="项目名字被修改-地址被更换" tabindex="-1">项目名字被修改，地址被更换 <a class="header-anchor" href="#项目名字被修改-地址被更换" aria-label="Permalink to &quot;项目名字被修改，地址被更换&quot;">​</a></h3><div class="language-bash vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">bash</span><pre class="shiki shiki-themes github-light github-dark vp-code" tabindex="0"><code><span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;"># 第一种</span></span>
<span class="line"><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">git</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> remote</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> set-url</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> origin</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> url</span><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;"> # 重新设置远程地址</span></span>
<span class="line"></span>
<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;"># 第二种</span></span>
<span class="line"><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">git</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> remote</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> rm</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> origin</span><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;"> # 删除跟踪远程</span></span>
<span class="line"><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">git</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> remote</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> add</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> origin</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> url</span><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;"> # 重新配置远程地址</span></span></code></pre></div><h3 id="放弃本地修改" tabindex="-1">放弃本地修改 <a class="header-anchor" href="#放弃本地修改" aria-label="Permalink to &quot;放弃本地修改&quot;">​</a></h3><p>没有<code>git add .</code>的情况</p><ul><li>放弃单个文件修改：<code>git checkout -- readme.md</code></li><li>放弃所有修改：<code>git checkout .</code></li></ul><p>有<code>git add .</code>的情况</p><ul><li>放弃单个文件：<code>git reset HEAD readme.md</code></li><li>放弃所有：<code>git reset HEAD .</code></li></ul><h3 id="修改错分支" tabindex="-1">修改错分支 <a class="header-anchor" href="#修改错分支" aria-label="Permalink to &quot;修改错分支&quot;">​</a></h3><ol><li><p>没有提交的情况</p><ul><li><p>无论有没有添加到暂存区都行（暂存区就是有commit代码）</p><div class="language-bash vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">bash</span><pre class="shiki shiki-themes github-light github-dark vp-code" tabindex="0"><code><span class="line"><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">git</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> checkout</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> -b</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> new_branch</span><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;"> # 建立临时分支, 这样改动会被带到新分支</span></span>
<span class="line"><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">git</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> stash</span><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;"> # 保存在栈区</span></span>
<span class="line"><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">git</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> checkout</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> 目标分支</span></span>
<span class="line"><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">git</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> pull</span><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;"> # 将代码拉下来, 避免解决冲突</span></span>
<span class="line"><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">git</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> stash</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> pop</span><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;"> # 将栈区内容取出放到当前分支</span></span></code></pre></div></li></ul></li><li><p>已提交</p><ul><li><p>当前分支也需要内容</p><div class="language-bash vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">bash</span><pre class="shiki shiki-themes github-light github-dark vp-code" tabindex="0"><code><span class="line"><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">git</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> checkout</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> targetBranch</span></span>
<span class="line"><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">git</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> cherry-pick</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> commitId</span></span></code></pre></div></li><li><p>当前分支不需要内容</p><div class="language-bash vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">bash</span><pre class="shiki shiki-themes github-light github-dark vp-code" tabindex="0"><code><span class="line"><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">git</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> reset</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> HEAD^</span><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;"> # 撤销最近一次提交</span></span></code></pre></div></li></ul></li><li><p>已提交</p><div class="language-bash vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">bash</span><pre class="shiki shiki-themes github-light github-dark vp-code" tabindex="0"><code><span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;"># 撤回这次提交，但保留改动的内容</span></span>
<span class="line"><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">git</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> reset</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> HEAD~</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> --soft</span></span>
<span class="line"><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">git</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> stash</span></span>
<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;"># 现在切到正确的那个分支去</span></span>
<span class="line"><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">git</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> checkout</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> name-of-the-correct-branch</span></span>
<span class="line"><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">git</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> stash</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> pop</span></span>
<span class="line"><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">git</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> add</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> .</span><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;"> # 或者你可以添加指定的文件</span></span>
<span class="line"><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">git</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> commit</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> -m</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> &quot;your message here&quot;</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">;</span></span>
<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;"># 现在你的改动就在正确的分支上啦</span></span></code></pre></div><p>第二种方法</p><div class="language-bash vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">bash</span><pre class="shiki shiki-themes github-light github-dark vp-code" tabindex="0"><code><span class="line"><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">git</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> checkout</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> name-of-the-correct-branch</span></span>
<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;"># 抓取 master 分支上最新的那个 commit</span></span>
<span class="line"><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">git</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> cherry-pick</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> master</span></span>
<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;"># 然后删掉 master 上的那个 commit</span></span>
<span class="line"><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">git</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> checkout</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> master</span></span>
<span class="line"><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">git</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> reset</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> HEAD~</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> --hard</span></span></code></pre></div></li></ol><h2 id="八、git统计代码量" tabindex="-1">八、git统计代码量 <a class="header-anchor" href="#八、git统计代码量" aria-label="Permalink to &quot;八、git统计代码量&quot;">​</a></h2><p>修改since开始日期，和until到什么日期，如果不修改则是至今</p><p>如果单独查询某个用户，修改$name为用户邮箱</p><div class="language-bash vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">bash</span><pre class="shiki shiki-themes github-light github-dark vp-code" tabindex="0"><code><span class="line"><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">git</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> log</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> --format=</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">&#39;%aN&#39;</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> |</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;"> sort</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> -u</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> |</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> while</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> read</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> name</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">; </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">do</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> echo</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> -en</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> &quot;</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">$name</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">\t&quot;</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">; </span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">git</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> log</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> --author=</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">&quot;</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">$name</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">&quot;</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> --pretty=tformat:</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> --since</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> =2020-03-30</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> --until=2020-04-02</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> --numstat</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> |</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;"> awk</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> &#39;{ add += $1; subs += $2; loc += $1 - $2 } END { printf &quot;added lines: %s, removed lines: %s, total lines: %s\n&quot;, add, subs, loc }&#39;</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> -</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">; </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">done</span></span></code></pre></div><p>--since 限制显示输出的范围</p><ul><li><code>--since</code>, <code>--after</code> 仅显示指定时间之后的提交</li><li><code>--until</code>, <code>--before</code> 仅显示指定时间之前的提交</li><li><code>--author</code> 仅显示指定作者相关的提交</li></ul><p>例子：</p><ul><li><code>git log --until=1.minute.ago</code> // 一分钟之前的所有log</li><li><code>git log --since=1.day.ago</code> // 一天之内的log</li><li><code>git log --since=1.month.age --until=2.weeks.age</code> // 一个月之前到半月之前的log</li></ul><p>指定时间</p><div class="language-bash vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">bash</span><pre class="shiki shiki-themes github-light github-dark vp-code" tabindex="0"><code><span class="line"><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">git</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> log</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> --format=</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">&#39;%aN&#39;</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> |</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;"> sort</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> -u</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> |</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> while</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> read</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> name</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">; </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">do</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> echo</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> -en</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> &quot;</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">$name</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">\t&quot;</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">; </span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">git</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> log</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> --author=</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">&quot;</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">$name</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">&quot;</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> --pretty=tformat:</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> --since</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> =&#39;2020-04-02 00:00:00&#39;</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> --until=</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">&#39;2020-04-02 23:59:59&#39;</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> --numstat</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> |</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;"> awk</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> &#39;{ add += $1; subs += $2;  loc += $1 - $2 } END { printf &quot;added lines: %s, removed lines: %s, total lines: %s\n&quot;, add, subs, loc }&#39;</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> -</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">; </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">done</span></span></code></pre></div><h2 id="九、git其他操作" tabindex="-1">九、git其他操作 <a class="header-anchor" href="#九、git其他操作" aria-label="Permalink to &quot;九、git其他操作&quot;">​</a></h2><p>在一行查看提交日志：<code>git log --oneline --decorate --graph</code></p><h3 id="git-rm" tabindex="-1">git rm <a class="header-anchor" href="#git-rm" aria-label="Permalink to &quot;git rm&quot;">​</a></h3><ul><li><p><code>git rm</code>：同时从工作区和索引中删除文件</p></li><li><p><code>git rm -r --cached</code>：从索引中删除文件，但是本地文件还在</p></li><li><p>常用的删除远程文件命令：</p><div class="language-bash vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">bash</span><pre class="shiki shiki-themes github-light github-dark vp-code" tabindex="0"><code><span class="line"><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">git</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> rm</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> -r</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> --cached</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> target</span><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;"> # 删除target文件</span></span>
<span class="line"><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">git</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> commit</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> -m</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> &#39;delete target&#39;</span></span>
<span class="line"><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">git</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> push</span></span></code></pre></div></li></ul><h3 id="打造自己的git-bash" tabindex="-1">打造自己的git bash <a class="header-anchor" href="#打造自己的git-bash" aria-label="Permalink to &quot;打造自己的git bash&quot;">​</a></h3><p><a href="https://blog.csdn.net/Dancer__Sky/article/details/81632640" target="_blank" rel="noreferrer">https://blog.csdn.net/Dancer__Sky/article/details/81632640</a></p><h2 id="常用git命令" tabindex="-1">常用git命令 <a class="header-anchor" href="#常用git命令" aria-label="Permalink to &quot;常用git命令&quot;">​</a></h2><ul><li>获取最后一个commitId： <code>git log -1 --pretty=%H</code></li><li>获取当前远程比本地多几个commit：<code>git rev-list --count --left-only @{u}...HEAD</code></li><li>获取当前分支：<code>git rev-parse --abbrev-ref HEAD</code></li></ul><h2 id="十、vscode操作git" tabindex="-1">十、vscode操作git <a class="header-anchor" href="#十、vscode操作git" aria-label="Permalink to &quot;十、vscode操作git&quot;">​</a></h2><h3 id="vscode配置git环境" tabindex="-1">vscode配置git环境 <a class="header-anchor" href="#vscode配置git环境" aria-label="Permalink to &quot;vscode配置git环境&quot;">​</a></h3><p>终端直接使用git方式，带有颜色</p><p>（1）将以下代码添加到vscode设置里面</p><p>路径：点击小齿轮--&gt;设置--&gt;点击以json文件编辑，并添加进去;</p><div class="language-json vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">json</span><pre class="shiki shiki-themes github-light github-dark vp-code" tabindex="0"><code><span class="line"><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">&quot;terminal.integrated.shell.windows&quot;</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">&quot;C:</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">\\</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">Program Files</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">\\</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">Git</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">\\</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">bin</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">\\</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">bash.exe&quot;</span></span></code></pre></div><p>（2）之后按ctrl+` 可以打开终端;</p><p>输入cmd可以转回原生的cmd终端</p><p>输入bash可以转回git终端;</p><h3 id="vscode文件后面的字母意思" tabindex="-1">vscode文件后面的字母意思 <a class="header-anchor" href="#vscode文件后面的字母意思" aria-label="Permalink to &quot;vscode文件后面的字母意思&quot;">​</a></h3><p>A: 你本地新增的文件（服务器上没有）.</p><p>C: 文件的一个新拷贝.</p><p>D: 你本地删除的文件（服务器上还在）.</p><p>M: 文件的内容或者mode被修改了.</p><p>R: 文件名被修改了。</p><p>T: 文件的类型被修改了。</p><p>U: 文件没有被合并(你需要完成合并才能进行提交)。</p><p>X: 未知状态(很可能是遇到git的bug了，你可以向git提交bug report)。</p><h3 id="vscode上传代码" tabindex="-1">vscode上传代码 <a class="header-anchor" href="#vscode上传代码" aria-label="Permalink to &quot;vscode上传代码&quot;">​</a></h3><ol><li>点击分支</li></ol><p><img src="https://notecdn.hrhe.cn/images/git-03.png" alt="image"></p><ol start="2"><li>点击对勾，之后弹出提示框，提示输入commit</li></ol><p><img src="https://notecdn.hrhe.cn/images/git-04.png" alt="image"></p><ol start="3"><li>点击推送，或者推送到（会提示选择分支）；</li></ol><p><img src="https://notecdn.hrhe.cn/images/git-05.png" alt="image"></p><ol start="4"><li>之后去git里面查看是否已经提交了代码；</li></ol><p><img src="https://notecdn.hrhe.cn/images/git-06.png" alt="image"></p><h3 id="vscode切换分支" tabindex="-1">vscode切换分支 <a class="header-anchor" href="#vscode切换分支" aria-label="Permalink to &quot;vscode切换分支&quot;">​</a></h3><p><img src="https://notecdn.hrhe.cn/images/git-07.png" alt="image"></p><h2 id="十一、vscode插件" tabindex="-1">十一、vscode插件 <a class="header-anchor" href="#十一、vscode插件" aria-label="Permalink to &quot;十一、vscode插件&quot;">​</a></h2><h3 id="gitlens" tabindex="-1">gitlens <a class="header-anchor" href="#gitlens" aria-label="Permalink to &quot;gitlens&quot;">​</a></h3><p>使用gitlens使开发更方便，代码管理更容易</p><ol><li>搜索：gitlens 并安装，之后在每一行代码后面可以清晰的看见</li></ol><p><img src="https://notecdn.hrhe.cn/images/git-08.png" alt="image"></p><ol start="2"><li>侧边栏工具使用</li></ol><p><img src="https://notecdn.hrhe.cn/images/git-09.png" alt="image"></p><p><img src="https://notecdn.hrhe.cn/images/git-10.png" alt="image"></p><ol start="3"><li>右上角实时对比分支修改内容</li></ol><p><img src="https://notecdn.hrhe.cn/images/git-11.png" alt="image"></p><h3 id="git-graph" tabindex="-1">git graph <a class="header-anchor" href="#git-graph" aria-label="Permalink to &quot;git graph&quot;">​</a></h3><p>方便查看git分支提交记录，可以直接基于一个log创建一个新的分支、</p><p>两种打开方式：</p><p><img src="https://notecdn.hrhe.cn/images/image-20200729003318782.png" alt="image-20200729003318782"><img src="https://notecdn.hrhe.cn/images/image-20200814102618851.png" alt="image-20200814102618851"></p><h2 id="十二、github搜索技巧" tabindex="-1">十二、github搜索技巧 <a class="header-anchor" href="#十二、github搜索技巧" aria-label="Permalink to &quot;十二、github搜索技巧&quot;">​</a></h2><p><img src="https://notecdn.hrhe.cn/images/image-20200715162848585.png" alt="image"></p><h2 id="参考链接" tabindex="-1">参考链接 <a class="header-anchor" href="#参考链接" aria-label="Permalink to &quot;参考链接&quot;">​</a></h2><ul><li><a href="https://www.cnblogs.com/hezhiying/p/9292314.html" target="_blank" rel="noreferrer">您必须知道的Git分支开发规范</a></li></ul></div></div></main><footer class="VPDocFooter" data-v-508e019d data-v-9772f039><!--[--><!--]--><div class="edit-info" data-v-9772f039><div class="edit-link" data-v-9772f039><a class="VPLink link vp-external-link-icon no-icon edit-link-button" href="https://gitee.com/lwj-wing/vite-note/edit/master/src/前端/other-note/git.md" target="_blank" rel="noreferrer" data-v-9772f039><!--[--><span class="vpi-square-pen edit-link-icon" data-v-9772f039></span> 在Gitee上编辑此页 <!--]--></a></div><div class="last-updated" data-v-9772f039><p class="VPLastUpdated" data-v-9772f039 data-v-6e8d07ac>最后编辑时间: <time datetime="2024-03-13T10:40:51.000Z" data-v-6e8d07ac></time></p></div></div><nav class="prev-next" aria-labelledby="doc-footer-aria-label" data-v-9772f039><span class="visually-hidden" id="doc-footer-aria-label" data-v-9772f039>Pager</span><div class="pager" data-v-9772f039><a class="VPLink link pager-link prev" href="/src/%E5%89%8D%E7%AB%AF/other-note/canvas.html" data-v-9772f039><!--[--><span class="desc" data-v-9772f039>上一篇</span><span class="title" data-v-9772f039>canvas</span><!--]--></a></div><div class="pager" data-v-9772f039><a class="VPLink link pager-link next" href="/src/%E5%89%8D%E7%AB%AF/other-note/hexo%E6%90%AD%E5%BB%BA%E4%B8%AA%E4%BA%BA%E5%8D%9A%E5%AE%A2.html" data-v-9772f039><!--[--><span class="desc" data-v-9772f039>下一篇</span><span class="title" data-v-9772f039>hexo搭建个人博客</span><!--]--></a></div></nav></footer><!--[--><!--]--></div></div></div><!--[--><!--]--></div></div><footer class="VPFooter has-sidebar" data-v-59b6aa09 data-v-ab997ade><div class="container" data-v-ab997ade><p class="message" data-v-ab997ade>The future is promising</p><p class="copyright" data-v-ab997ade>Copyright © 2024-present Evan You</p></div></footer><!--[--><!--]--></div></div>
    <script>window.__VP_HASH_MAP__=JSON.parse("{\"api-examples.md\":\"D02bY_kH\",\"index.md\":\"DqOr8Xbd\",\"markdown-examples.md\":\"CMEwRY7S\",\"src_前端_electron_electron-01 electron概念、搭建⼀个⼯程.md\":\"B2_jOGn7\",\"src_前端_electron_electron-02 进程通讯.md\":\"DqAOCgK-\",\"src_前端_electron_index.md\":\"fXcUF6_d\",\"src_前端_es6_es6-01 let、解构、模板、箭头.md\":\"g5ZIs0YN\",\"src_前端_es6_es6-02 扩展、symbol、iterator.md\":\"BBfez6p5\",\"src_前端_es6_es6-03 类、set、map.md\":\"BYgn7hRf\",\"src_前端_es6_es6-04 promise、async.md\":\"COUFI3NH\",\"src_前端_es6_es6-05 扩展.md\":\"CXPrToL_\",\"src_前端_es6_es6-06 module.md\":\"DCcst06e\",\"src_前端_es6_es6-07 proxy、reflect.md\":\"D2RdYqRI\",\"src_前端_es6_es6-08 新提案.md\":\"DZ19nl0v\",\"src_前端_es6_es6原理实现.md\":\"CWwAQ0AH\",\"src_前端_es6_index.md\":\"FoR1qj_L\",\"src_前端_html5_css 预编译器.md\":\"ByDIGcwq\",\"src_前端_html5_css小方法.md\":\"BnjXlpVe\",\"src_前端_html5_css常用布局.md\":\"LynnoER6\",\"src_前端_html5_css常见bug.md\":\"DMYNqpxP\",\"src_前端_html5_html-01 基础知识.md\":\"CEVaZz9A\",\"src_前端_html5_html-02 a标签，表格，表单.md\":\"yc5WPE8s\",\"src_前端_html5_html-03 css样式字体.md\":\"gJegfjPQ\",\"src_前端_html5_html-04 盒子模型 背景.md\":\"D4MyhWQ-\",\"src_前端_html5_html-05 元素转换、浮动.md\":\"FLK8PSFb\",\"src_前端_html5_html-06 定位 bfc.md\":\"BLE9U9ei\",\"src_前端_html5_html-07 布局方式 ie.md\":\"DM9VPQpJ\",\"src_前端_html5_html-08 雪碧图.md\":\"DWWxsyfK\",\"src_前端_html5_html-11 svg简介.md\":\"ux0kGj_x\",\"src_前端_html5_html-12 html5.md\":\"CjDyJ099\",\"src_前端_html5_html-13 css3选择器.md\":\"CVmiQNV4\",\"src_前端_html5_html-14 flex、grid、table.md\":\"DpDWJJ0N\",\"src_前端_html5_html-15 less css预处理器.md\":\"DSGKlvxf\",\"src_前端_html5_html-17 移动端布局.md\":\"BIZ_vn1o\",\"src_前端_html5_html-18 2d、3d动画.md\":\"lzpwsKi5\",\"src_前端_html5_html-19 filter.md\":\"DYHWOijt\",\"src_前端_html5_html面试问题.md\":\"DeaItgDA\",\"src_前端_html5_index.md\":\"7PNMxP4V\",\"src_前端_html5_reset.css.md\":\"Bmm_ZC94\",\"src_前端_html5_容易忘记的知识.md\":\"BgPsCGrL\",\"src_前端_html5_提高css开发效率.md\":\"BK0gpmbK\",\"src_前端_index.md\":\"BRfjlHBy\",\"src_前端_javascript_index.md\":\"qdUoRZXW\",\"src_前端_javascript_js-01 javascript 初始.md\":\"D_USRX_5\",\"src_前端_javascript_js-02 javascript数据类型篇.md\":\"4pH3xLvm\",\"src_前端_javascript_js-03 条件、循环、语句.md\":\"BDH7g7W-\",\"src_前端_javascript_js-04 自定义属性.md\":\"Bx_l3ppo\",\"src_前端_javascript_js-05 函数.md\":\"C1lzvqgu\",\"src_前端_javascript_js-06 定时器、时间、math.md\":\"BsMuSPgS\",\"src_前端_javascript_js-07 字符串、对象.md\":\"CBP34CNQ\",\"src_前端_javascript_js-08 数组.md\":\"DoV-MHEA\",\"src_前端_javascript_js-09 dom.md\":\"D0Gp9Mot\",\"src_前端_javascript_js-10 bom.md\":\"C_AhmjD0\",\"src_前端_javascript_js-11 事件对象.md\":\"BFdBQqjN\",\"src_前端_javascript_js-12 拖拽、缓冲、懒加载.md\":\"DJ9KUedV\",\"src_前端_javascript_js-13 cookie.md\":\"C0bV36SA\",\"src_前端_javascript_js-14 正则篇.md\":\"B-wagaab\",\"src_前端_javascript_js-15 面向对象、继承.md\":\"C9PhudED\",\"src_前端_javascript_js-16 闭包、高阶函数、ajax.md\":\"36PpR8Hy\",\"src_前端_javascript_js-17 拖拽api、文件上传、下载.md\":\"CdJzpGAh\",\"src_前端_javascript_js-18 其他api.md\":\"BYivjPN3\",\"src_前端_javascript_js-19 ajax、接口请求 跨域.md\":\"BHD15-DE\",\"src_前端_javascript_js小方法.md\":\"CnSOvmY-\",\"src_前端_javascript_js插件推荐.md\":\"CT5Ay2CH\",\"src_前端_javascript_js数据结构.md\":\"Bvn8LP33\",\"src_前端_javascript_js源码实现.md\":\"DVX8shu5\",\"src_前端_javascript_js理论面试题.md\":\"CYIkhEXl\",\"src_前端_javascript_js算法.md\":\"BxFBX0nD\",\"src_前端_javascript_js类型整合（助记）.md\":\"BlJAY9zn\",\"src_前端_javascript_js设计模式.md\":\"MPEOP48g\",\"src_前端_javascript_js面试问题.md\":\"B45ZNlis\",\"src_前端_javascript_lodash常用方法.md\":\"DGgL4-nF\",\"src_前端_jquery_index.md\":\"cx6Bxns1\",\"src_前端_jquery_jq-01 什么是jquery.md\":\"CLtsnivz\",\"src_前端_jquery_jq-02 选择器.md\":\"DiNJEuNh\",\"src_前端_jquery_jq-03 属性、位置.md\":\"7cbkTX_p\",\"src_前端_jquery_jq-04 事件和动画.md\":\"BWUv6jHZ\",\"src_前端_jquery_jq-05 ajax 自定义jquery插件.md\":\"Cx-DW66l\",\"src_前端_mini-programe_index.md\":\"COjfWa7M\",\"src_前端_mini-programe_小程序-01 小程序入门.md\":\"ZbaKJc31\",\"src_前端_mini-programe_小程序-02 模板、组件.md\":\"CVYdIn7-\",\"src_前端_mini-programe_小程序-03  媒体组件.md\":\"u7oIZ12m\",\"src_前端_mini-programe_小程序-04  api.md\":\"o4bGRLyc\",\"src_前端_mini-programe_小程序-05 路由封装.md\":\"_hKBQCZR\",\"src_前端_mini-programe_小程序-07 mpvue.md\":\"Ham2Kc4z\",\"src_前端_nextjs_index.md\":\"Bn5HJ8Qu\",\"src_前端_nextjs_next-01 服务端组件、客户端组件、不同类型组件交叉使用的注意点、缓存.md\":\"jlFJVS5D\",\"src_前端_nextjs_next-02 路由处理程序、serveraction.md\":\"9UyM2mZz\",\"src_前端_node_http状态码.md\":\"CiZwi2wu\",\"src_前端_node_index.md\":\"AXtvF6Rn\",\"src_前端_node_node-01 http nodejs.md\":\"P8IkJsJD\",\"src_前端_node_node-02 路由、path、模块.md\":\"ffIcpBiC\",\"src_前端_node_node-03 fs文件.md\":\"B4lIjb-T\",\"src_前端_node_node-04 express 跨域.md\":\"CzJXH_iR\",\"src_前端_node_node-05 restful、爬虫.md\":\"CPV5fMJK\",\"src_前端_node_node-06 加密 cookie ejs.md\":\"BKYSoC4L\",\"src_前端_node_node-07 模板化.md\":\"BZAsusLM\",\"src_前端_node_node-08 mongodb.md\":\"BXmmyUGm\",\"src_前端_node_node-09 mongoose.md\":\"CcTRmIpe\",\"src_前端_node_node-10 websocket.md\":\"C7KZM5nb\",\"src_前端_node_node使用babel.md\":\"DoD_cFWw\",\"src_前端_node_node常用指令.md\":\"ScU6hl-1\",\"src_前端_node_node插件分享.md\":\"_voRW8be\",\"src_前端_node_node项目实例.md\":\"B3fKqsiR\",\"src_前端_node_node项目小技巧.md\":\"B5ox8Wnn\",\"src_前端_other-note_animate.css使用方法.md\":\"B7zLxnfh\",\"src_前端_other-note_ast抽象语法树.md\":\"Cy7aGHYi\",\"src_前端_other-note_bootstrap 全局css样式.md\":\"CK8fVLW6\",\"src_前端_other-note_canvas.md\":\"DcDaBioB\",\"src_前端_other-note_git.md\":\"BzGlgr8Z\",\"src_前端_other-note_hexo搭建个人博客.md\":\"C0UpIBa4\",\"src_前端_other-note_immutable.md\":\"BUoFMfpJ\",\"src_前端_other-note_index.md\":\"DxYJZUpO\",\"src_前端_other-note_mac使用技巧.md\":\"xSxJhB7-\",\"src_前端_other-note_markdown语法.md\":\"D7_j3BnF\",\"src_前端_other-note_mobx.md\":\"DjHZ_72x\",\"src_前端_other-note_typora设置.md\":\"D27814An\",\"src_前端_other-note_vs code 使用技巧.md\":\"BVAkp6bU\",\"src_前端_other-note_vuepress搭建个人博客.md\":\"pToIdJAS\",\"src_前端_other-note_七牛云cdn加速图片.md\":\"BjT7v2_J\",\"src_前端_other-note_包管理工具.md\":\"Tg-3oxy3\",\"src_前端_other-note_团队协作工具.md\":\"hUAGQIIJ\",\"src_前端_other-note_微信分享.md\":\"Co6XkI4r\",\"src_前端_other-note_未学知识.md\":\"Dg2C7nbT\",\"src_前端_other-note_浏览器技巧.md\":\"U9LYUf1k\",\"src_前端_other-note_百度地图api.md\":\"B83RWuvc\",\"src_前端_other-note_配置支付宝接口.md\":\"e_iGUHrb\",\"src_前端_other-note_面试复习.md\":\"Bbs6GqpM\",\"src_前端_react-native_index.md\":\"Dpt_eiNy\",\"src_前端_react-native_rn-01 react-native.md\":\"DL9V9bYr\",\"src_前端_react_hooks实现原理.md\":\"CP83fYpH\",\"src_前端_react_index.md\":\"VDlFYWPP\",\"src_前端_react_reach__router.md\":\"DqFmLiVz\",\"src_前端_react_react-01 初识.md\":\"Bt1LZ9QT\",\"src_前端_react_react-02 脚手架、jsx.md\":\"DnNp_Mdw\",\"src_前端_react_react-03 组件通讯、生命周期.md\":\"BXhqyPZB\",\"src_前端_react_react-04 路由.md\":\"Crt7SVdX\",\"src_前端_react_react-05 其他api.md\":\"CYhCYrRI\",\"src_前端_react_react-06 redux.md\":\"unyiBMp2\",\"src_前端_react_react-07 hooks.md\":\"sA9yBlzf\",\"src_前端_react_react-08 高阶组件.md\":\"Cwz3MOSL\",\"src_前端_react_react-09 项目优化、项目坑.md\":\"BRsexucu\",\"src_前端_react_react-10 服务端渲染.md\":\"Co70wCB7\",\"src_前端_react_react写测试.md\":\"CP5CjQ6F\",\"src_前端_react_react常用插件.md\":\"CkEQBVub\",\"src_前端_react_react搭建项目.md\":\"B0zFM4kA\",\"src_前端_react_react面试.md\":\"D5TvKvfP\",\"src_前端_react_常用自定义hooks.md\":\"Dt15GMps\",\"src_前端_server_index.md\":\"Dq336_-M\",\"src_前端_server_linux-01 系统知识.md\":\"DZwWXZmP\",\"src_前端_server_linux-02 基本操作.md\":\"Bfhow8Wb\",\"src_前端_server_linux-03 文件操作.md\":\"78vSmjpz\",\"src_前端_server_linux-04 vim编辑器.md\":\"Cg7jFpHc\",\"src_前端_server_linux-05 基本管理.md\":\"C8_S0GU7\",\"src_前端_server_linux-06 shell基础.md\":\"D5C-4wk3\",\"src_前端_server_linux-07 shell语句.md\":\"BoQysxiH\",\"src_前端_server_linux常用.md\":\"C-ynQ-iq\",\"src_前端_server_nginx配置.md\":\"D5D2mEje\",\"src_前端_server_ubuntu教程.md\":\"CjB3Rnwx\",\"src_前端_server_宝塔面板搭建服务器.md\":\"Bkl3dDFK\",\"src_前端_typescript_index.md\":\"CkIHS7tD\",\"src_前端_typescript_ts-01 基础类型.md\":\"2irzp8ud\",\"src_前端_typescript_ts-02 接口、函数.md\":\"CQPjs5h9\",\"src_前端_typescript_ts-03 泛型、类.md\":\"Cf-jJPYb\",\"src_前端_typescript_ts-04 枚举、类型推论.md\":\"C48d6bcr\",\"src_前端_typescript_ts-05 高级类型.md\":\"IwuPz0Ol\",\"src_前端_typescript_ts-06 命名空间、声明合并.md\":\"DFd9FqBg\",\"src_前端_typescript_ts-07 装饰器、mixins.md\":\"lH-tyqye\",\"src_前端_typescript_ts-08 声明文件、模块解析.md\":\"D2falCuC\",\"src_前端_typescript_ts-09 其他.md\":\"CURsW23Z\",\"src_前端_typescript_ts-类型收集.md\":\"3M_3UMV1\",\"src_前端_typescript_tsconfig.md\":\"DT8xWB-9\",\"src_前端_typescript_ts实战例子.md\":\"D0KciTHX\",\"src_前端_typescript_ts开发环境搭建.md\":\"CUHjBroV\",\"src_前端_typescript_typescript_react.md\":\"y_jcUPo1\",\"src_前端_typescript_typescript_vue.md\":\"CWtHmSBj\",\"src_前端_typescript_总结typescript.md\":\"DUYuNSSl\",\"src_前端_vue_index.md\":\"B0JBklst\",\"src_前端_vue_vue-01 初识vue.md\":\"SOvwAZPJ\",\"src_前端_vue_vue-02 修饰符 表单.md\":\"CgFIlVww\",\"src_前端_vue_vue-03 组件 prop.md\":\"RH8VaFdf\",\"src_前端_vue_vue-04 组件通讯 插槽.md\":\"C4K6FJfE\",\"src_前端_vue_vue-05 过渡 生命周期.md\":\"BoBdrNG_\",\"src_前端_vue_vue-06 router.md\":\"660siYST\",\"src_前端_vue_vue-07 vuex.md\":\"BNXCUpOf\",\"src_前端_vue_vue-08 插件开发.md\":\"BinZaAAy\",\"src_前端_vue_vue3-api.md\":\"DetXSE0o\",\"src_前端_vue_vue3-vue2不同点.md\":\"4iMrwEBZ\",\"src_前端_vue_vue3造轮子常用.md\":\"DB27lE9m\",\"src_前端_vue_vue实战技巧.md\":\"Cwk98MqW\",\"src_前端_vue_vue造轮子常用方法.md\":\"B4sK0yoI\",\"src_前端_vue_vue面试题.md\":\"BdwVFGqK\",\"src_前端_vue_vue项目bug记录.md\":\"BuFCw_9h\",\"src_前端_webpack_index.md\":\"7RBPSido\",\"src_前端_webpack_webpack-01 服务、配置项.md\":\"BsGfbj18\",\"src_前端_webpack_webpack-02 处理js、暴露全局变量.md\":\"Y5LoVDrh\",\"src_前端_webpack_webpack-03 多页面、source-map、实时打包.md\":\"CLCC-6U8\",\"src_前端_webpack_webpack-04  优化、动态链接库、多线程打包.md\":\"DJxIyLbD\",\"src_前端_webpack_webpack-05 抽离公共模块、懒加载.md\":\"DEEvQ0Rd\",\"src_前端_webpack_webpack原理.md\":\"CJgcFCvW\",\"src_前端_webpack_webpack插件.md\":\"C4e1liYh\"}");window.__VP_SITE_DATA__=JSON.parse("{\"lang\":\"en-US\",\"dir\":\"ltr\",\"title\":\"Wing's Note\",\"description\":\"前端\",\"base\":\"/\",\"head\":[],\"router\":{\"prefetchLinks\":true},\"appearance\":true,\"themeConfig\":{\"returnToTopLabel\":\"回到顶部\",\"footer\":{\"message\":\"The future is promising\",\"copyright\":\"Copyright © 2024-present Evan You\"},\"logo\":\"/logo.png\",\"outline\":{\"label\":\"页面导航\"},\"nav\":[{\"text\":\"Vue\",\"link\":\"/src/前端/Vue/\"},{\"text\":\"Typescript\",\"link\":\"/src/前端/Typescript/\"},{\"text\":\"Javascript\",\"link\":\"/src/前端/Javascript/\"},{\"text\":\"html5\",\"link\":\"/src/前端/html5/\"},{\"text\":\"前端\",\"items\":[{\"text\":\"Electron\",\"link\":\"/src/前端/Electron/\",\"activeMatch\":\"/src/前端/Electron/\"},{\"text\":\"Javascript\",\"link\":\"/src/前端/Javascript/\",\"activeMatch\":\"/src/前端/Javascript/\"},{\"text\":\"Nextjs\",\"link\":\"/src/前端/Nextjs/\",\"activeMatch\":\"/src/前端/Nextjs/\"},{\"text\":\"React\",\"link\":\"/src/前端/React/\",\"activeMatch\":\"/src/前端/React/\"},{\"text\":\"Server\",\"link\":\"/src/前端/Server/\",\"activeMatch\":\"/src/前端/Server/\"},{\"text\":\"Typescript\",\"link\":\"/src/前端/Typescript/\",\"activeMatch\":\"/src/前端/Typescript/\"},{\"text\":\"Vue\",\"link\":\"/src/前端/Vue/\",\"activeMatch\":\"/src/前端/Vue/\"},{\"text\":\"Webpack\",\"link\":\"/src/前端/Webpack/\",\"activeMatch\":\"/src/前端/Webpack/\"},{\"text\":\"es6\",\"link\":\"/src/前端/es6/\",\"activeMatch\":\"/src/前端/es6/\"},{\"text\":\"html5\",\"link\":\"/src/前端/html5/\",\"activeMatch\":\"/src/前端/html5/\"},{\"text\":\"index\",\"link\":\"/src/前端/index\",\"activeMatch\":\"/src/前端/index/\"},{\"text\":\"jQuery\",\"link\":\"/src/前端/jQuery/\",\"activeMatch\":\"/src/前端/jQuery/\"},{\"text\":\"mini-programe\",\"link\":\"/src/前端/mini-programe/\",\"activeMatch\":\"/src/前端/mini-programe/\"},{\"text\":\"node\",\"link\":\"/src/前端/node/\",\"activeMatch\":\"/src/前端/node/\"},{\"text\":\"other-note\",\"link\":\"/src/前端/other-note/\",\"activeMatch\":\"/src/前端/other-note/\"},{\"text\":\"react-native\",\"link\":\"/src/前端/react-native/\",\"activeMatch\":\"/src/前端/react-native/\"}],\"activeMatch\":\"/src/前端/\"}],\"sidebar\":{\"/src/前端/Electron\":{\"text\":\"Electron\",\"items\":[{\"text\":\"Electron-01 electron概念、搭建⼀个⼯程\",\"link\":\"/src/前端/Electron/Electron-01 electron概念、搭建⼀个⼯程\"},{\"text\":\"Electron-02 进程通讯\",\"link\":\"/src/前端/Electron/Electron-02 进程通讯\"}]},\"/src/前端/Javascript\":{\"text\":\"Javascript\",\"items\":[{\"text\":\"js-01 javascript 初始\",\"link\":\"/src/前端/Javascript/js-01 javascript 初始\"},{\"text\":\"js-02 javascript数据类型篇\",\"link\":\"/src/前端/Javascript/js-02 javascript数据类型篇\"},{\"text\":\"js-03 条件、循环、语句\",\"link\":\"/src/前端/Javascript/js-03 条件、循环、语句\"},{\"text\":\"js-04 自定义属性\",\"link\":\"/src/前端/Javascript/js-04 自定义属性\"},{\"text\":\"js-05 函数\",\"link\":\"/src/前端/Javascript/js-05 函数\"},{\"text\":\"js-06 定时器、时间、Math\",\"link\":\"/src/前端/Javascript/js-06 定时器、时间、Math\"},{\"text\":\"js-07 字符串、对象\",\"link\":\"/src/前端/Javascript/js-07 字符串、对象\"},{\"text\":\"js-08 数组\",\"link\":\"/src/前端/Javascript/js-08 数组\"},{\"text\":\"js-09 DOM\",\"link\":\"/src/前端/Javascript/js-09 DOM\"},{\"text\":\"js-10 BOM\",\"link\":\"/src/前端/Javascript/js-10 BOM\"},{\"text\":\"js-11 事件对象\",\"link\":\"/src/前端/Javascript/js-11 事件对象\"},{\"text\":\"js-12 拖拽、缓冲、懒加载\",\"link\":\"/src/前端/Javascript/js-12 拖拽、缓冲、懒加载\"},{\"text\":\"js-13 cookie\",\"link\":\"/src/前端/Javascript/js-13 cookie\"},{\"text\":\"js-14 正则篇\",\"link\":\"/src/前端/Javascript/js-14 正则篇\"},{\"text\":\"js-15 面向对象、继承\",\"link\":\"/src/前端/Javascript/js-15 面向对象、继承\"},{\"text\":\"js-16 闭包、高阶函数、ajax\",\"link\":\"/src/前端/Javascript/js-16 闭包、高阶函数、ajax\"},{\"text\":\"js-17 拖拽API、文件上传、下载\",\"link\":\"/src/前端/Javascript/js-17 拖拽API、文件上传、下载\"},{\"text\":\"js-18 其他API\",\"link\":\"/src/前端/Javascript/js-18 其他API\"},{\"text\":\"js-19 ajax、接口请求 跨域\",\"link\":\"/src/前端/Javascript/js-19 ajax、接口请求 跨域\"},{\"text\":\"js小方法\",\"link\":\"/src/前端/Javascript/js小方法\"},{\"text\":\"js插件推荐\",\"link\":\"/src/前端/Javascript/js插件推荐\"},{\"text\":\"js数据结构\",\"link\":\"/src/前端/Javascript/js数据结构\"},{\"text\":\"js源码实现\",\"link\":\"/src/前端/Javascript/js源码实现\"},{\"text\":\"js理论面试题\",\"link\":\"/src/前端/Javascript/js理论面试题\"},{\"text\":\"js算法\",\"link\":\"/src/前端/Javascript/js算法\"},{\"text\":\"js类型整合（助记）\",\"link\":\"/src/前端/Javascript/js类型整合（助记）\"},{\"text\":\"js设计模式\",\"link\":\"/src/前端/Javascript/js设计模式\"},{\"text\":\"js面试问题\",\"link\":\"/src/前端/Javascript/js面试问题\"},{\"text\":\"lodash常用方法\",\"link\":\"/src/前端/Javascript/lodash常用方法\"}]},\"/src/前端/Nextjs\":{\"text\":\"Nextjs\",\"items\":[{\"text\":\"Next-01 服务端组件、客户端组件、不同类型组件交叉使用的注意点、缓存\",\"link\":\"/src/前端/Nextjs/Next-01 服务端组件、客户端组件、不同类型组件交叉使用的注意点、缓存\"},{\"text\":\"Next-02 路由处理程序、ServerAction\",\"link\":\"/src/前端/Nextjs/Next-02 路由处理程序、ServerAction\"}]},\"/src/前端/React\":{\"text\":\"React\",\"items\":[{\"text\":\"Reach__router\",\"link\":\"/src/前端/React/Reach__router\"},{\"text\":\"React写测试\",\"link\":\"/src/前端/React/React写测试\"},{\"text\":\"React搭建项目\",\"link\":\"/src/前端/React/React搭建项目\"},{\"text\":\"React面试\",\"link\":\"/src/前端/React/React面试\"},{\"text\":\"hooks实现原理\",\"link\":\"/src/前端/React/hooks实现原理\"},{\"text\":\"react-01 初识\",\"link\":\"/src/前端/React/react-01 初识\"},{\"text\":\"react-02 脚手架、JSX\",\"link\":\"/src/前端/React/react-02 脚手架、JSX\"},{\"text\":\"react-03 组件通讯、生命周期\",\"link\":\"/src/前端/React/react-03 组件通讯、生命周期\"},{\"text\":\"react-04 路由\",\"link\":\"/src/前端/React/react-04 路由\"},{\"text\":\"react-05 其他Api\",\"link\":\"/src/前端/React/react-05 其他Api\"},{\"text\":\"react-06 Redux\",\"link\":\"/src/前端/React/react-06 Redux\"},{\"text\":\"react-07 hooks\",\"link\":\"/src/前端/React/react-07 hooks\"},{\"text\":\"react-08 高阶组件\",\"link\":\"/src/前端/React/react-08 高阶组件\"},{\"text\":\"react-09 项目优化、项目坑\",\"link\":\"/src/前端/React/react-09 项目优化、项目坑\"},{\"text\":\"react-10 服务端渲染\",\"link\":\"/src/前端/React/react-10 服务端渲染\"},{\"text\":\"react常用插件\",\"link\":\"/src/前端/React/react常用插件\"},{\"text\":\"常用自定义hooks\",\"link\":\"/src/前端/React/常用自定义hooks\"}]},\"/src/前端/Server\":{\"text\":\"Server\",\"items\":[{\"text\":\"linux-01 系统知识\",\"link\":\"/src/前端/Server/linux-01 系统知识\"},{\"text\":\"linux-02 基本操作\",\"link\":\"/src/前端/Server/linux-02 基本操作\"},{\"text\":\"linux-03 文件操作\",\"link\":\"/src/前端/Server/linux-03 文件操作\"},{\"text\":\"linux-04 vim编辑器\",\"link\":\"/src/前端/Server/linux-04 vim编辑器\"},{\"text\":\"linux-05 基本管理\",\"link\":\"/src/前端/Server/linux-05 基本管理\"},{\"text\":\"linux-06 shell基础\",\"link\":\"/src/前端/Server/linux-06 shell基础\"},{\"text\":\"linux-07 shell语句\",\"link\":\"/src/前端/Server/linux-07 shell语句\"},{\"text\":\"linux常用\",\"link\":\"/src/前端/Server/linux常用\"},{\"text\":\"nginx配置\",\"link\":\"/src/前端/Server/nginx配置\"},{\"text\":\"ubuntu教程\",\"link\":\"/src/前端/Server/ubuntu教程\"},{\"text\":\"宝塔面板搭建服务器\",\"link\":\"/src/前端/Server/宝塔面板搭建服务器\"}]},\"/src/前端/Typescript\":{\"text\":\"Typescript\",\"items\":[{\"text\":\"ts-01 基础类型\",\"link\":\"/src/前端/Typescript/ts-01 基础类型\"},{\"text\":\"ts-02 接口、函数\",\"link\":\"/src/前端/Typescript/ts-02 接口、函数\"},{\"text\":\"ts-03 泛型、类\",\"link\":\"/src/前端/Typescript/ts-03 泛型、类\"},{\"text\":\"ts-04 枚举、类型推论\",\"link\":\"/src/前端/Typescript/ts-04 枚举、类型推论\"},{\"text\":\"ts-05 高级类型\",\"link\":\"/src/前端/Typescript/ts-05 高级类型\"},{\"text\":\"ts-06 命名空间、声明合并\",\"link\":\"/src/前端/Typescript/ts-06 命名空间、声明合并\"},{\"text\":\"ts-07 装饰器、Mixins\",\"link\":\"/src/前端/Typescript/ts-07 装饰器、Mixins\"},{\"text\":\"ts-08 声明文件、模块解析\",\"link\":\"/src/前端/Typescript/ts-08 声明文件、模块解析\"},{\"text\":\"ts-09 其他\",\"link\":\"/src/前端/Typescript/ts-09 其他\"},{\"text\":\"ts-类型收集\",\"link\":\"/src/前端/Typescript/ts-类型收集\"},{\"text\":\"tsconfig\",\"link\":\"/src/前端/Typescript/tsconfig\"},{\"text\":\"ts实战例子\",\"link\":\"/src/前端/Typescript/ts实战例子\"},{\"text\":\"ts开发环境搭建\",\"link\":\"/src/前端/Typescript/ts开发环境搭建\"},{\"text\":\"typescript_react\",\"link\":\"/src/前端/Typescript/typescript_react\"},{\"text\":\"typescript_vue\",\"link\":\"/src/前端/Typescript/typescript_vue\"},{\"text\":\"总结Typescript\",\"link\":\"/src/前端/Typescript/总结Typescript\"}]},\"/src/前端/Vue\":{\"text\":\"Vue\",\"items\":[{\"text\":\"Vue3-API\",\"link\":\"/src/前端/Vue/Vue3-API\"},{\"text\":\"Vue3-Vue2不同点\",\"link\":\"/src/前端/Vue/Vue3-Vue2不同点\"},{\"text\":\"Vue3造轮子常用\",\"link\":\"/src/前端/Vue/Vue3造轮子常用\"},{\"text\":\"vue-01 初识vue\",\"link\":\"/src/前端/Vue/vue-01 初识vue\"},{\"text\":\"vue-02 修饰符 表单\",\"link\":\"/src/前端/Vue/vue-02 修饰符 表单\"},{\"text\":\"vue-03 组件 Prop\",\"link\":\"/src/前端/Vue/vue-03 组件 Prop\"},{\"text\":\"vue-04 组件通讯 插槽\",\"link\":\"/src/前端/Vue/vue-04 组件通讯 插槽\"},{\"text\":\"vue-05 过渡 生命周期\",\"link\":\"/src/前端/Vue/vue-05 过渡 生命周期\"},{\"text\":\"vue-06 Router\",\"link\":\"/src/前端/Vue/vue-06 Router\"},{\"text\":\"vue-07 Vuex\",\"link\":\"/src/前端/Vue/vue-07 Vuex\"},{\"text\":\"vue-08 插件开发\",\"link\":\"/src/前端/Vue/vue-08 插件开发\"},{\"text\":\"vue实战技巧\",\"link\":\"/src/前端/Vue/vue实战技巧\"},{\"text\":\"vue造轮子常用方法\",\"link\":\"/src/前端/Vue/vue造轮子常用方法\"},{\"text\":\"vue面试题\",\"link\":\"/src/前端/Vue/vue面试题\"},{\"text\":\"vue项目bug记录\",\"link\":\"/src/前端/Vue/vue项目bug记录\"}]},\"/src/前端/Webpack\":{\"text\":\"Webpack\",\"items\":[{\"text\":\"webpack-01 服务、配置项\",\"link\":\"/src/前端/Webpack/webpack-01 服务、配置项\"},{\"text\":\"webpack-02 处理js、暴露全局变量\",\"link\":\"/src/前端/Webpack/webpack-02 处理js、暴露全局变量\"},{\"text\":\"webpack-03 多页面、source-map、实时打包\",\"link\":\"/src/前端/Webpack/webpack-03 多页面、source-map、实时打包\"},{\"text\":\"webpack-04  优化、动态链接库、多线程打包\",\"link\":\"/src/前端/Webpack/webpack-04  优化、动态链接库、多线程打包\"},{\"text\":\"webpack-05 抽离公共模块、懒加载\",\"link\":\"/src/前端/Webpack/webpack-05 抽离公共模块、懒加载\"},{\"text\":\"webpack原理\",\"link\":\"/src/前端/Webpack/webpack原理\"},{\"text\":\"webpack插件\",\"link\":\"/src/前端/Webpack/webpack插件\"}]},\"/src/前端/es6\":{\"text\":\"es6\",\"items\":[{\"text\":\"es6-01 let、解构、模板、箭头\",\"link\":\"/src/前端/es6/es6-01 let、解构、模板、箭头\"},{\"text\":\"es6-02 扩展、Symbol、iterator\",\"link\":\"/src/前端/es6/es6-02 扩展、Symbol、iterator\"},{\"text\":\"es6-03 类、set、map\",\"link\":\"/src/前端/es6/es6-03 类、set、map\"},{\"text\":\"es6-04 Promise、async\",\"link\":\"/src/前端/es6/es6-04 Promise、async\"},{\"text\":\"es6-05 扩展\",\"link\":\"/src/前端/es6/es6-05 扩展\"},{\"text\":\"es6-06 module\",\"link\":\"/src/前端/es6/es6-06 module\"},{\"text\":\"es6-07 proxy、Reflect\",\"link\":\"/src/前端/es6/es6-07 proxy、Reflect\"},{\"text\":\"es6-08 新提案\",\"link\":\"/src/前端/es6/es6-08 新提案\"},{\"text\":\"es6原理实现\",\"link\":\"/src/前端/es6/es6原理实现\"}]},\"/src/前端/html5\":{\"text\":\"html5\",\"items\":[{\"text\":\"CSS 预编译器\",\"link\":\"/src/前端/html5/CSS 预编译器\"},{\"text\":\"CSS常用布局\",\"link\":\"/src/前端/html5/CSS常用布局\"},{\"text\":\"css小方法\",\"link\":\"/src/前端/html5/css小方法\"},{\"text\":\"css常见bug\",\"link\":\"/src/前端/html5/css常见bug\"},{\"text\":\"html-01 基础知识\",\"link\":\"/src/前端/html5/html-01 基础知识\"},{\"text\":\"html-02 a标签，表格，表单\",\"link\":\"/src/前端/html5/html-02 a标签，表格，表单\"},{\"text\":\"html-03 CSS样式字体\",\"link\":\"/src/前端/html5/html-03 CSS样式字体\"},{\"text\":\"html-04 盒子模型 背景\",\"link\":\"/src/前端/html5/html-04 盒子模型 背景\"},{\"text\":\"html-05 元素转换、浮动\",\"link\":\"/src/前端/html5/html-05 元素转换、浮动\"},{\"text\":\"html-06 定位 BFC\",\"link\":\"/src/前端/html5/html-06 定位 BFC\"},{\"text\":\"html-07 布局方式 IE\",\"link\":\"/src/前端/html5/html-07 布局方式 IE\"},{\"text\":\"html-08 雪碧图\",\"link\":\"/src/前端/html5/html-08 雪碧图\"},{\"text\":\"html-11 Svg简介\",\"link\":\"/src/前端/html5/html-11 Svg简介\"},{\"text\":\"html-12 HTML5\",\"link\":\"/src/前端/html5/html-12 HTML5\"},{\"text\":\"html-13 CSS3选择器\",\"link\":\"/src/前端/html5/html-13 CSS3选择器\"},{\"text\":\"html-14 flex、grid、table\",\"link\":\"/src/前端/html5/html-14 flex、grid、table\"},{\"text\":\"html-15 LESS css预处理器\",\"link\":\"/src/前端/html5/html-15 LESS css预处理器\"},{\"text\":\"html-17 移动端布局\",\"link\":\"/src/前端/html5/html-17 移动端布局\"},{\"text\":\"html-18 2D、3D动画\",\"link\":\"/src/前端/html5/html-18 2D、3D动画\"},{\"text\":\"html-19 filter\",\"link\":\"/src/前端/html5/html-19 filter\"},{\"text\":\"html面试问题\",\"link\":\"/src/前端/html5/html面试问题\"},{\"text\":\"reset.css\",\"link\":\"/src/前端/html5/reset.css\"},{\"text\":\"容易忘记的知识\",\"link\":\"/src/前端/html5/容易忘记的知识\"},{\"text\":\"提高css开发效率\",\"link\":\"/src/前端/html5/提高css开发效率\"}]},\"/src/前端/jQuery\":{\"text\":\"jQuery\",\"items\":[{\"text\":\"jq-01 什么是jQuery\",\"link\":\"/src/前端/jQuery/jq-01 什么是jQuery\"},{\"text\":\"jq-02 选择器\",\"link\":\"/src/前端/jQuery/jq-02 选择器\"},{\"text\":\"jq-03 属性、位置\",\"link\":\"/src/前端/jQuery/jq-03 属性、位置\"},{\"text\":\"jq-04 事件和动画\",\"link\":\"/src/前端/jQuery/jq-04 事件和动画\"},{\"text\":\"jq-05 ajax 自定义jquery插件\",\"link\":\"/src/前端/jQuery/jq-05 ajax 自定义jquery插件\"}]},\"/src/前端/mini-programe\":{\"text\":\"mini-programe\",\"items\":[{\"text\":\"小程序-01 小程序入门\",\"link\":\"/src/前端/mini-programe/小程序-01 小程序入门\"},{\"text\":\"小程序-02 模板、组件\",\"link\":\"/src/前端/mini-programe/小程序-02 模板、组件\"},{\"text\":\"小程序-03  媒体组件\",\"link\":\"/src/前端/mini-programe/小程序-03  媒体组件\"},{\"text\":\"小程序-04  API\",\"link\":\"/src/前端/mini-programe/小程序-04  API\"},{\"text\":\"小程序-05 路由封装\",\"link\":\"/src/前端/mini-programe/小程序-05 路由封装\"},{\"text\":\"小程序-07 mpvue\",\"link\":\"/src/前端/mini-programe/小程序-07 mpvue\"}]},\"/src/前端/node\":{\"text\":\"node\",\"items\":[{\"text\":\"HTTP状态码\",\"link\":\"/src/前端/node/HTTP状态码\"},{\"text\":\"index的副本.assets\",\"collapsed\":false,\"items\":[],\"collapsible\":true},{\"text\":\"node-01 http nodejs\",\"link\":\"/src/前端/node/node-01 http nodejs\"},{\"text\":\"node-02 路由、path、模块\",\"link\":\"/src/前端/node/node-02 路由、path、模块\"},{\"text\":\"node-03 fs文件\",\"link\":\"/src/前端/node/node-03 fs文件\"},{\"text\":\"node-04 express 跨域\",\"link\":\"/src/前端/node/node-04 express 跨域\"},{\"text\":\"node-05 RESTful、爬虫\",\"link\":\"/src/前端/node/node-05 RESTful、爬虫\"},{\"text\":\"node-06 加密 cookie ejs\",\"link\":\"/src/前端/node/node-06 加密 cookie ejs\"},{\"text\":\"node-07 模板化\",\"link\":\"/src/前端/node/node-07 模板化\"},{\"text\":\"node-08 mongodb\",\"link\":\"/src/前端/node/node-08 mongodb\"},{\"text\":\"node-09 mongoose\",\"link\":\"/src/前端/node/node-09 mongoose\"},{\"text\":\"node-10 websocket\",\"link\":\"/src/前端/node/node-10 websocket\"},{\"text\":\"node使用babel\",\"link\":\"/src/前端/node/node使用babel\"},{\"text\":\"node常用指令\",\"link\":\"/src/前端/node/node常用指令\"},{\"text\":\"node插件分享\",\"link\":\"/src/前端/node/node插件分享\"},{\"text\":\"node项目实例\",\"link\":\"/src/前端/node/node项目实例\"},{\"text\":\"node项目小技巧\",\"link\":\"/src/前端/node/node项目小技巧\"}]},\"/src/前端/other-note\":{\"text\":\"other-note\",\"items\":[{\"text\":\"AST抽象语法树\",\"link\":\"/src/前端/other-note/AST抽象语法树\"},{\"text\":\"Immutable\",\"link\":\"/src/前端/other-note/Immutable\"},{\"text\":\"Mac使用技巧\",\"link\":\"/src/前端/other-note/Mac使用技巧\"},{\"text\":\"Markdown语法\",\"link\":\"/src/前端/other-note/Markdown语法\"},{\"text\":\"Typora设置\",\"link\":\"/src/前端/other-note/Typora设置\"},{\"text\":\"VS code 使用技巧\",\"link\":\"/src/前端/other-note/VS code 使用技巧\"},{\"text\":\"VuePress搭建个人博客\",\"link\":\"/src/前端/other-note/VuePress搭建个人博客\"},{\"text\":\"animate.css使用方法\",\"link\":\"/src/前端/other-note/animate.css使用方法\"},{\"text\":\"bootstrap 全局css样式\",\"link\":\"/src/前端/other-note/bootstrap 全局css样式\"},{\"text\":\"canvas\",\"link\":\"/src/前端/other-note/canvas\"},{\"text\":\"git\",\"link\":\"/src/前端/other-note/git\"},{\"text\":\"hexo搭建个人博客\",\"link\":\"/src/前端/other-note/hexo搭建个人博客\"},{\"text\":\"mobx\",\"link\":\"/src/前端/other-note/mobx\"},{\"text\":\"七牛云cdn加速图片\",\"link\":\"/src/前端/other-note/七牛云cdn加速图片\"},{\"text\":\"包管理工具\",\"link\":\"/src/前端/other-note/包管理工具\"},{\"text\":\"团队协作工具\",\"link\":\"/src/前端/other-note/团队协作工具\"},{\"text\":\"微信分享\",\"link\":\"/src/前端/other-note/微信分享\"},{\"text\":\"未学知识\",\"link\":\"/src/前端/other-note/未学知识\"},{\"text\":\"浏览器技巧\",\"link\":\"/src/前端/other-note/浏览器技巧\"},{\"text\":\"百度地图API\",\"link\":\"/src/前端/other-note/百度地图API\"},{\"text\":\"配置支付宝接口\",\"link\":\"/src/前端/other-note/配置支付宝接口\"},{\"text\":\"面试复习\",\"link\":\"/src/前端/other-note/面试复习\"}]},\"/src/前端/react-native\":{\"text\":\"react-native\",\"items\":[{\"text\":\"rn-01 react-native\",\"link\":\"/src/前端/react-native/rn-01 react-native\"}]},\"/src/前端/\":[{\"text\":\"Electron\",\"collapsed\":false,\"items\":[{\"text\":\"Electron-01 electron概念、搭建⼀个⼯程\",\"link\":\"/src/前端/Electron/Electron-01 electron概念、搭建⼀个⼯程\"},{\"text\":\"Electron-02 进程通讯\",\"link\":\"/src/前端/Electron/Electron-02 进程通讯\"}],\"collapsible\":true},{\"text\":\"Javascript\",\"collapsed\":false,\"items\":[{\"text\":\"js-01 javascript 初始\",\"link\":\"/src/前端/Javascript/js-01 javascript 初始\"},{\"text\":\"js-02 javascript数据类型篇\",\"link\":\"/src/前端/Javascript/js-02 javascript数据类型篇\"},{\"text\":\"js-03 条件、循环、语句\",\"link\":\"/src/前端/Javascript/js-03 条件、循环、语句\"},{\"text\":\"js-04 自定义属性\",\"link\":\"/src/前端/Javascript/js-04 自定义属性\"},{\"text\":\"js-05 函数\",\"link\":\"/src/前端/Javascript/js-05 函数\"},{\"text\":\"js-06 定时器、时间、Math\",\"link\":\"/src/前端/Javascript/js-06 定时器、时间、Math\"},{\"text\":\"js-07 字符串、对象\",\"link\":\"/src/前端/Javascript/js-07 字符串、对象\"},{\"text\":\"js-08 数组\",\"link\":\"/src/前端/Javascript/js-08 数组\"},{\"text\":\"js-09 DOM\",\"link\":\"/src/前端/Javascript/js-09 DOM\"},{\"text\":\"js-10 BOM\",\"link\":\"/src/前端/Javascript/js-10 BOM\"},{\"text\":\"js-11 事件对象\",\"link\":\"/src/前端/Javascript/js-11 事件对象\"},{\"text\":\"js-12 拖拽、缓冲、懒加载\",\"link\":\"/src/前端/Javascript/js-12 拖拽、缓冲、懒加载\"},{\"text\":\"js-13 cookie\",\"link\":\"/src/前端/Javascript/js-13 cookie\"},{\"text\":\"js-14 正则篇\",\"link\":\"/src/前端/Javascript/js-14 正则篇\"},{\"text\":\"js-15 面向对象、继承\",\"link\":\"/src/前端/Javascript/js-15 面向对象、继承\"},{\"text\":\"js-16 闭包、高阶函数、ajax\",\"link\":\"/src/前端/Javascript/js-16 闭包、高阶函数、ajax\"},{\"text\":\"js-17 拖拽API、文件上传、下载\",\"link\":\"/src/前端/Javascript/js-17 拖拽API、文件上传、下载\"},{\"text\":\"js-18 其他API\",\"link\":\"/src/前端/Javascript/js-18 其他API\"},{\"text\":\"js-19 ajax、接口请求 跨域\",\"link\":\"/src/前端/Javascript/js-19 ajax、接口请求 跨域\"},{\"text\":\"js小方法\",\"link\":\"/src/前端/Javascript/js小方法\"},{\"text\":\"js插件推荐\",\"link\":\"/src/前端/Javascript/js插件推荐\"},{\"text\":\"js数据结构\",\"link\":\"/src/前端/Javascript/js数据结构\"},{\"text\":\"js源码实现\",\"link\":\"/src/前端/Javascript/js源码实现\"},{\"text\":\"js理论面试题\",\"link\":\"/src/前端/Javascript/js理论面试题\"},{\"text\":\"js算法\",\"link\":\"/src/前端/Javascript/js算法\"},{\"text\":\"js类型整合（助记）\",\"link\":\"/src/前端/Javascript/js类型整合（助记）\"},{\"text\":\"js设计模式\",\"link\":\"/src/前端/Javascript/js设计模式\"},{\"text\":\"js面试问题\",\"link\":\"/src/前端/Javascript/js面试问题\"},{\"text\":\"lodash常用方法\",\"link\":\"/src/前端/Javascript/lodash常用方法\"}],\"collapsible\":true},{\"text\":\"Nextjs\",\"collapsed\":false,\"items\":[{\"text\":\"Next-01 服务端组件、客户端组件、不同类型组件交叉使用的注意点、缓存\",\"link\":\"/src/前端/Nextjs/Next-01 服务端组件、客户端组件、不同类型组件交叉使用的注意点、缓存\"},{\"text\":\"Next-02 路由处理程序、ServerAction\",\"link\":\"/src/前端/Nextjs/Next-02 路由处理程序、ServerAction\"}],\"collapsible\":true},{\"text\":\"React\",\"collapsed\":false,\"items\":[{\"text\":\"Reach__router\",\"link\":\"/src/前端/React/Reach__router\"},{\"text\":\"React写测试\",\"link\":\"/src/前端/React/React写测试\"},{\"text\":\"React搭建项目\",\"link\":\"/src/前端/React/React搭建项目\"},{\"text\":\"React面试\",\"link\":\"/src/前端/React/React面试\"},{\"text\":\"hooks实现原理\",\"link\":\"/src/前端/React/hooks实现原理\"},{\"text\":\"react-01 初识\",\"link\":\"/src/前端/React/react-01 初识\"},{\"text\":\"react-02 脚手架、JSX\",\"link\":\"/src/前端/React/react-02 脚手架、JSX\"},{\"text\":\"react-03 组件通讯、生命周期\",\"link\":\"/src/前端/React/react-03 组件通讯、生命周期\"},{\"text\":\"react-04 路由\",\"link\":\"/src/前端/React/react-04 路由\"},{\"text\":\"react-05 其他Api\",\"link\":\"/src/前端/React/react-05 其他Api\"},{\"text\":\"react-06 Redux\",\"link\":\"/src/前端/React/react-06 Redux\"},{\"text\":\"react-07 hooks\",\"link\":\"/src/前端/React/react-07 hooks\"},{\"text\":\"react-08 高阶组件\",\"link\":\"/src/前端/React/react-08 高阶组件\"},{\"text\":\"react-09 项目优化、项目坑\",\"link\":\"/src/前端/React/react-09 项目优化、项目坑\"},{\"text\":\"react-10 服务端渲染\",\"link\":\"/src/前端/React/react-10 服务端渲染\"},{\"text\":\"react常用插件\",\"link\":\"/src/前端/React/react常用插件\"},{\"text\":\"常用自定义hooks\",\"link\":\"/src/前端/React/常用自定义hooks\"}],\"collapsible\":true},{\"text\":\"Server\",\"collapsed\":false,\"items\":[{\"text\":\"linux-01 系统知识\",\"link\":\"/src/前端/Server/linux-01 系统知识\"},{\"text\":\"linux-02 基本操作\",\"link\":\"/src/前端/Server/linux-02 基本操作\"},{\"text\":\"linux-03 文件操作\",\"link\":\"/src/前端/Server/linux-03 文件操作\"},{\"text\":\"linux-04 vim编辑器\",\"link\":\"/src/前端/Server/linux-04 vim编辑器\"},{\"text\":\"linux-05 基本管理\",\"link\":\"/src/前端/Server/linux-05 基本管理\"},{\"text\":\"linux-06 shell基础\",\"link\":\"/src/前端/Server/linux-06 shell基础\"},{\"text\":\"linux-07 shell语句\",\"link\":\"/src/前端/Server/linux-07 shell语句\"},{\"text\":\"linux常用\",\"link\":\"/src/前端/Server/linux常用\"},{\"text\":\"nginx配置\",\"link\":\"/src/前端/Server/nginx配置\"},{\"text\":\"ubuntu教程\",\"link\":\"/src/前端/Server/ubuntu教程\"},{\"text\":\"宝塔面板搭建服务器\",\"link\":\"/src/前端/Server/宝塔面板搭建服务器\"}],\"collapsible\":true},{\"text\":\"Typescript\",\"collapsed\":false,\"items\":[{\"text\":\"ts-01 基础类型\",\"link\":\"/src/前端/Typescript/ts-01 基础类型\"},{\"text\":\"ts-02 接口、函数\",\"link\":\"/src/前端/Typescript/ts-02 接口、函数\"},{\"text\":\"ts-03 泛型、类\",\"link\":\"/src/前端/Typescript/ts-03 泛型、类\"},{\"text\":\"ts-04 枚举、类型推论\",\"link\":\"/src/前端/Typescript/ts-04 枚举、类型推论\"},{\"text\":\"ts-05 高级类型\",\"link\":\"/src/前端/Typescript/ts-05 高级类型\"},{\"text\":\"ts-06 命名空间、声明合并\",\"link\":\"/src/前端/Typescript/ts-06 命名空间、声明合并\"},{\"text\":\"ts-07 装饰器、Mixins\",\"link\":\"/src/前端/Typescript/ts-07 装饰器、Mixins\"},{\"text\":\"ts-08 声明文件、模块解析\",\"link\":\"/src/前端/Typescript/ts-08 声明文件、模块解析\"},{\"text\":\"ts-09 其他\",\"link\":\"/src/前端/Typescript/ts-09 其他\"},{\"text\":\"ts-类型收集\",\"link\":\"/src/前端/Typescript/ts-类型收集\"},{\"text\":\"tsconfig\",\"link\":\"/src/前端/Typescript/tsconfig\"},{\"text\":\"ts实战例子\",\"link\":\"/src/前端/Typescript/ts实战例子\"},{\"text\":\"ts开发环境搭建\",\"link\":\"/src/前端/Typescript/ts开发环境搭建\"},{\"text\":\"typescript_react\",\"link\":\"/src/前端/Typescript/typescript_react\"},{\"text\":\"typescript_vue\",\"link\":\"/src/前端/Typescript/typescript_vue\"},{\"text\":\"总结Typescript\",\"link\":\"/src/前端/Typescript/总结Typescript\"}],\"collapsible\":true},{\"text\":\"Vue\",\"collapsed\":false,\"items\":[{\"text\":\"Vue3-API\",\"link\":\"/src/前端/Vue/Vue3-API\"},{\"text\":\"Vue3-Vue2不同点\",\"link\":\"/src/前端/Vue/Vue3-Vue2不同点\"},{\"text\":\"Vue3造轮子常用\",\"link\":\"/src/前端/Vue/Vue3造轮子常用\"},{\"text\":\"vue-01 初识vue\",\"link\":\"/src/前端/Vue/vue-01 初识vue\"},{\"text\":\"vue-02 修饰符 表单\",\"link\":\"/src/前端/Vue/vue-02 修饰符 表单\"},{\"text\":\"vue-03 组件 Prop\",\"link\":\"/src/前端/Vue/vue-03 组件 Prop\"},{\"text\":\"vue-04 组件通讯 插槽\",\"link\":\"/src/前端/Vue/vue-04 组件通讯 插槽\"},{\"text\":\"vue-05 过渡 生命周期\",\"link\":\"/src/前端/Vue/vue-05 过渡 生命周期\"},{\"text\":\"vue-06 Router\",\"link\":\"/src/前端/Vue/vue-06 Router\"},{\"text\":\"vue-07 Vuex\",\"link\":\"/src/前端/Vue/vue-07 Vuex\"},{\"text\":\"vue-08 插件开发\",\"link\":\"/src/前端/Vue/vue-08 插件开发\"},{\"text\":\"vue实战技巧\",\"link\":\"/src/前端/Vue/vue实战技巧\"},{\"text\":\"vue造轮子常用方法\",\"link\":\"/src/前端/Vue/vue造轮子常用方法\"},{\"text\":\"vue面试题\",\"link\":\"/src/前端/Vue/vue面试题\"},{\"text\":\"vue项目bug记录\",\"link\":\"/src/前端/Vue/vue项目bug记录\"}],\"collapsible\":true},{\"text\":\"Webpack\",\"collapsed\":false,\"items\":[{\"text\":\"webpack-01 服务、配置项\",\"link\":\"/src/前端/Webpack/webpack-01 服务、配置项\"},{\"text\":\"webpack-02 处理js、暴露全局变量\",\"link\":\"/src/前端/Webpack/webpack-02 处理js、暴露全局变量\"},{\"text\":\"webpack-03 多页面、source-map、实时打包\",\"link\":\"/src/前端/Webpack/webpack-03 多页面、source-map、实时打包\"},{\"text\":\"webpack-04  优化、动态链接库、多线程打包\",\"link\":\"/src/前端/Webpack/webpack-04  优化、动态链接库、多线程打包\"},{\"text\":\"webpack-05 抽离公共模块、懒加载\",\"link\":\"/src/前端/Webpack/webpack-05 抽离公共模块、懒加载\"},{\"text\":\"webpack原理\",\"link\":\"/src/前端/Webpack/webpack原理\"},{\"text\":\"webpack插件\",\"link\":\"/src/前端/Webpack/webpack插件\"}],\"collapsible\":true},{\"text\":\"es6\",\"collapsed\":false,\"items\":[{\"text\":\"es6-01 let、解构、模板、箭头\",\"link\":\"/src/前端/es6/es6-01 let、解构、模板、箭头\"},{\"text\":\"es6-02 扩展、Symbol、iterator\",\"link\":\"/src/前端/es6/es6-02 扩展、Symbol、iterator\"},{\"text\":\"es6-03 类、set、map\",\"link\":\"/src/前端/es6/es6-03 类、set、map\"},{\"text\":\"es6-04 Promise、async\",\"link\":\"/src/前端/es6/es6-04 Promise、async\"},{\"text\":\"es6-05 扩展\",\"link\":\"/src/前端/es6/es6-05 扩展\"},{\"text\":\"es6-06 module\",\"link\":\"/src/前端/es6/es6-06 module\"},{\"text\":\"es6-07 proxy、Reflect\",\"link\":\"/src/前端/es6/es6-07 proxy、Reflect\"},{\"text\":\"es6-08 新提案\",\"link\":\"/src/前端/es6/es6-08 新提案\"},{\"text\":\"es6原理实现\",\"link\":\"/src/前端/es6/es6原理实现\"}],\"collapsible\":true},{\"text\":\"html5\",\"collapsed\":false,\"items\":[{\"text\":\"CSS 预编译器\",\"link\":\"/src/前端/html5/CSS 预编译器\"},{\"text\":\"CSS常用布局\",\"link\":\"/src/前端/html5/CSS常用布局\"},{\"text\":\"css小方法\",\"link\":\"/src/前端/html5/css小方法\"},{\"text\":\"css常见bug\",\"link\":\"/src/前端/html5/css常见bug\"},{\"text\":\"html-01 基础知识\",\"link\":\"/src/前端/html5/html-01 基础知识\"},{\"text\":\"html-02 a标签，表格，表单\",\"link\":\"/src/前端/html5/html-02 a标签，表格，表单\"},{\"text\":\"html-03 CSS样式字体\",\"link\":\"/src/前端/html5/html-03 CSS样式字体\"},{\"text\":\"html-04 盒子模型 背景\",\"link\":\"/src/前端/html5/html-04 盒子模型 背景\"},{\"text\":\"html-05 元素转换、浮动\",\"link\":\"/src/前端/html5/html-05 元素转换、浮动\"},{\"text\":\"html-06 定位 BFC\",\"link\":\"/src/前端/html5/html-06 定位 BFC\"},{\"text\":\"html-07 布局方式 IE\",\"link\":\"/src/前端/html5/html-07 布局方式 IE\"},{\"text\":\"html-08 雪碧图\",\"link\":\"/src/前端/html5/html-08 雪碧图\"},{\"text\":\"html-11 Svg简介\",\"link\":\"/src/前端/html5/html-11 Svg简介\"},{\"text\":\"html-12 HTML5\",\"link\":\"/src/前端/html5/html-12 HTML5\"},{\"text\":\"html-13 CSS3选择器\",\"link\":\"/src/前端/html5/html-13 CSS3选择器\"},{\"text\":\"html-14 flex、grid、table\",\"link\":\"/src/前端/html5/html-14 flex、grid、table\"},{\"text\":\"html-15 LESS css预处理器\",\"link\":\"/src/前端/html5/html-15 LESS css预处理器\"},{\"text\":\"html-17 移动端布局\",\"link\":\"/src/前端/html5/html-17 移动端布局\"},{\"text\":\"html-18 2D、3D动画\",\"link\":\"/src/前端/html5/html-18 2D、3D动画\"},{\"text\":\"html-19 filter\",\"link\":\"/src/前端/html5/html-19 filter\"},{\"text\":\"html面试问题\",\"link\":\"/src/前端/html5/html面试问题\"},{\"text\":\"reset.css\",\"link\":\"/src/前端/html5/reset.css\"},{\"text\":\"容易忘记的知识\",\"link\":\"/src/前端/html5/容易忘记的知识\"},{\"text\":\"提高css开发效率\",\"link\":\"/src/前端/html5/提高css开发效率\"}],\"collapsible\":true},{\"text\":\"jQuery\",\"collapsed\":false,\"items\":[{\"text\":\"jq-01 什么是jQuery\",\"link\":\"/src/前端/jQuery/jq-01 什么是jQuery\"},{\"text\":\"jq-02 选择器\",\"link\":\"/src/前端/jQuery/jq-02 选择器\"},{\"text\":\"jq-03 属性、位置\",\"link\":\"/src/前端/jQuery/jq-03 属性、位置\"},{\"text\":\"jq-04 事件和动画\",\"link\":\"/src/前端/jQuery/jq-04 事件和动画\"},{\"text\":\"jq-05 ajax 自定义jquery插件\",\"link\":\"/src/前端/jQuery/jq-05 ajax 自定义jquery插件\"}],\"collapsible\":true},{\"text\":\"mini-programe\",\"collapsed\":false,\"items\":[{\"text\":\"小程序-01 小程序入门\",\"link\":\"/src/前端/mini-programe/小程序-01 小程序入门\"},{\"text\":\"小程序-02 模板、组件\",\"link\":\"/src/前端/mini-programe/小程序-02 模板、组件\"},{\"text\":\"小程序-03  媒体组件\",\"link\":\"/src/前端/mini-programe/小程序-03  媒体组件\"},{\"text\":\"小程序-04  API\",\"link\":\"/src/前端/mini-programe/小程序-04  API\"},{\"text\":\"小程序-05 路由封装\",\"link\":\"/src/前端/mini-programe/小程序-05 路由封装\"},{\"text\":\"小程序-07 mpvue\",\"link\":\"/src/前端/mini-programe/小程序-07 mpvue\"}],\"collapsible\":true},{\"text\":\"node\",\"collapsed\":false,\"items\":[{\"text\":\"HTTP状态码\",\"link\":\"/src/前端/node/HTTP状态码\"},{\"text\":\"index的副本.assets\",\"collapsed\":false,\"items\":[],\"collapsible\":true},{\"text\":\"node-01 http nodejs\",\"link\":\"/src/前端/node/node-01 http nodejs\"},{\"text\":\"node-02 路由、path、模块\",\"link\":\"/src/前端/node/node-02 路由、path、模块\"},{\"text\":\"node-03 fs文件\",\"link\":\"/src/前端/node/node-03 fs文件\"},{\"text\":\"node-04 express 跨域\",\"link\":\"/src/前端/node/node-04 express 跨域\"},{\"text\":\"node-05 RESTful、爬虫\",\"link\":\"/src/前端/node/node-05 RESTful、爬虫\"},{\"text\":\"node-06 加密 cookie ejs\",\"link\":\"/src/前端/node/node-06 加密 cookie ejs\"},{\"text\":\"node-07 模板化\",\"link\":\"/src/前端/node/node-07 模板化\"},{\"text\":\"node-08 mongodb\",\"link\":\"/src/前端/node/node-08 mongodb\"},{\"text\":\"node-09 mongoose\",\"link\":\"/src/前端/node/node-09 mongoose\"},{\"text\":\"node-10 websocket\",\"link\":\"/src/前端/node/node-10 websocket\"},{\"text\":\"node使用babel\",\"link\":\"/src/前端/node/node使用babel\"},{\"text\":\"node常用指令\",\"link\":\"/src/前端/node/node常用指令\"},{\"text\":\"node插件分享\",\"link\":\"/src/前端/node/node插件分享\"},{\"text\":\"node项目实例\",\"link\":\"/src/前端/node/node项目实例\"},{\"text\":\"node项目小技巧\",\"link\":\"/src/前端/node/node项目小技巧\"}],\"collapsible\":true},{\"text\":\"other-note\",\"collapsed\":false,\"items\":[{\"text\":\"AST抽象语法树\",\"link\":\"/src/前端/other-note/AST抽象语法树\"},{\"text\":\"Immutable\",\"link\":\"/src/前端/other-note/Immutable\"},{\"text\":\"Mac使用技巧\",\"link\":\"/src/前端/other-note/Mac使用技巧\"},{\"text\":\"Markdown语法\",\"link\":\"/src/前端/other-note/Markdown语法\"},{\"text\":\"Typora设置\",\"link\":\"/src/前端/other-note/Typora设置\"},{\"text\":\"VS code 使用技巧\",\"link\":\"/src/前端/other-note/VS code 使用技巧\"},{\"text\":\"VuePress搭建个人博客\",\"link\":\"/src/前端/other-note/VuePress搭建个人博客\"},{\"text\":\"animate.css使用方法\",\"link\":\"/src/前端/other-note/animate.css使用方法\"},{\"text\":\"bootstrap 全局css样式\",\"link\":\"/src/前端/other-note/bootstrap 全局css样式\"},{\"text\":\"canvas\",\"link\":\"/src/前端/other-note/canvas\"},{\"text\":\"git\",\"link\":\"/src/前端/other-note/git\"},{\"text\":\"hexo搭建个人博客\",\"link\":\"/src/前端/other-note/hexo搭建个人博客\"},{\"text\":\"mobx\",\"link\":\"/src/前端/other-note/mobx\"},{\"text\":\"七牛云cdn加速图片\",\"link\":\"/src/前端/other-note/七牛云cdn加速图片\"},{\"text\":\"包管理工具\",\"link\":\"/src/前端/other-note/包管理工具\"},{\"text\":\"团队协作工具\",\"link\":\"/src/前端/other-note/团队协作工具\"},{\"text\":\"微信分享\",\"link\":\"/src/前端/other-note/微信分享\"},{\"text\":\"未学知识\",\"link\":\"/src/前端/other-note/未学知识\"},{\"text\":\"浏览器技巧\",\"link\":\"/src/前端/other-note/浏览器技巧\"},{\"text\":\"百度地图API\",\"link\":\"/src/前端/other-note/百度地图API\"},{\"text\":\"配置支付宝接口\",\"link\":\"/src/前端/other-note/配置支付宝接口\"},{\"text\":\"面试复习\",\"link\":\"/src/前端/other-note/面试复习\"}],\"collapsible\":true},{\"text\":\"react-native\",\"collapsed\":false,\"items\":[{\"text\":\"rn-01 react-native\",\"link\":\"/src/前端/react-native/rn-01 react-native\"}],\"collapsible\":true}]},\"socialLinks\":[{\"icon\":\"github\",\"link\":\"https://gitee.com/lwj-wing\"}],\"algolia\":{\"appId\":\"HB9RH9MVTU\",\"apiKey\":\"a1ecd3b81f0afbd82c111a8548a67c06\",\"indexName\":\"Github\"},\"editLink\":{\"pattern\":\"https://gitee.com/lwj-wing/vite-note/edit/master/:path\",\"text\":\"在Gitee上编辑此页 \"},\"lastUpdated\":{\"text\":\"最后编辑时间\",\"formatOptions\":{\"dateStyle\":\"full\",\"timeStyle\":\"medium\"}},\"docFooter\":{\"prev\":\"上一篇\",\"next\":\"下一篇\"}},\"locales\":{},\"scrollOffset\":134,\"cleanUrls\":false}");</script>
    
  </body>
</html>